Jak neposílat DDS data tam kam nechci?
Když používate publish subcribe model komunikace, tak si vyberete topiky, které vás zajímají a ty odebíráte.
U DDS® máme dvě možnosti, jak omezit zasílání dat. Jedná se o:
domény
segmenty.
O doménách jsem již mluvil a v tomto videu se podíváme na segmenty (Partitions).
U domén jsme si řekli, že aplikace může komunikovat pouze s těmi aplikacemi, které jsou ve stejné doméně.
Segmenty umožňují přiřadit topiky do logických skupin. Tím jsme schopni ovlivnit (kromě Topiků), kteří DataWriteři (DW) a DataReadeři (DR) se vzájemně propojí. Protože pouze DW a DR ve stejném segmentu spolu mohou komunikovat.
Informace o segmentech (partitions):
Partitiony jsou přiřazovány entitě Publishera nebo Subscribera a jsou identifikovány pomocí libovolného řetězce znaků.
Ve výchozím stavu patří Publisher a Subscriber do jediné partitiony jejíž jméno je prázdný řetězec.
To jestli jsou Publisher a Subscriber ve stejném segmentu se provádí na základě porovnání řetězce znaků. A to z každé strany zvlášť. Také jsme schopni se přihlásit se do segmentu i pomocí regulárních výrazů.
Když například vytvořím segmenty na základě stát-kraj-město-ulice. Tak jsem schopen jednoduše přijímat veškeré topiky, které jsou poskytovány v celém městě, tím že se zapíšu do segmentu stát-kraj-město-*.
Podobně to třeba řeší MQTT nebo AMQP, kde je však toto členění svázáno přímo s topikem. Což není tak flexibilní.
Vezměte si příklad, kdy potřebuji přidělit přístup k různým datům na základě toho, jaká má uživatel práva. U DDS pouze přiřadím tyto topiky data do nového segmentu, ke kterému mají přístup pouze tito daní uživatelé Např. k datům týkající se financí budou mít přístup účetní, projektový manažeři a ředitel.
Nebo v případě kdy chci omezit výměnu dat pouze mezi uživateli, co jsou zapojeni do vojenské mise, cvičení nebo do simulace.
Publisher nebo Subscriber může být součástí více segmentů.
Segmenty jsme schopni dynamicky měnit. Nicméně při změně segmentů je potřeba si dát pozor na to, že v případě, kdy má aplikace nastaveno pomocí QoS že data zasílá i těm co se připojí později, tak tyto aplikace obdrží i ta data, která byla původně zaslána do jiných segmentů.