- Hands-On Cloud:Native Microservices with Jakarta EE
- Luigi Fugaro Mauro Vocale
- 332字
- 2021-07-02 13:47:09
Reactive systems
A reactive system is a definition of a set of principles that are needed to maintain the responsiveness of and build systems that are able to respond to requests even with failures or under heavy load.
To build such a system, a reactive system chooses a message-driven model that is considered reliable and performant. All the components interact with each other using messages that are sent and received asynchronously. To decouple senders and receivers, components send and receive messages using virtual addresses.
But what's a virtual address? It's a destination identifier that's usually expressed as a URL. The delivery semantic depends on the technology used in the reactive programming frameworks to implement them.
In this design, there is no block during the execution of the flow—senders do not wait for a response; they may receive a response later and in the meantime, they can continue to do their job of sending other messages.
So the main core of a reactive system is an asynchronous messaging design that should be able to guarantee the following properties:
- Elasticity: The ability to scale horizontally that comes from the decoupling provided by message interactions. A load balance strategy is used by consumers of the messages, which are sent to a virtual address to distribute the load and guarantee high performance.
- Resilience: The ability to handle failure and to recover messages that comes from the ability to handle failure without blocking the execution of the services workflow. Thanks to the asynchronous aspect, components don't wait for responses and a potential failure of one component would not impact others. Furthermore, when a node that is consuming a message fails in the operation, the message can be processed by another node registered on the same address.
With the possession of these two characteristics, a system could be considered responsive.
This set of principles is very important when you intend to build microservice systems that are distributed and that are beyond the control of the caller.
- 數據通信網絡實踐:基礎知識與交換機技術
- Mastering Machine Learning for Penetration Testing
- EDA技術與VHDL編程
- SEO 20日
- 重新定義Spring Cloud實戰
- Building RESTful Web Services with Spring 5(Second Edition)
- 計算機網絡原理與應用技術
- 世界互聯網發展報告·2019
- Microservice Patterns and Best Practices
- OMNeT++與網絡仿真
- 網絡綜合布線(第2版)
- 網絡安全之道
- 計算機通信網絡安全
- 區塊鏈技術與應用:打造分布式商業新生態
- Cisco無線局域網配置基礎