23.12.11

ActiveMQ in Action–Chapter 1 - When

  • Not  only  will  a change to one component in the system not ripple across the entire system, but component  interaction  is  also  dramatically  simplified.

I truly doubt it. Smile It may be true for component interaction per se, but not for system architecture design.

Loosely coupling and asynchronous communication approach add a lot of complexity into architecture design. At least, it is very much against the traditional way of designing the system, so that system architects need to learn how to design the system using Message Queuing approach, instead of using direct communication approaches.

  • EDA
    • Instead  of  using  a  synchronous scheme for component interaction (where one method calls another and  the  caller  waits  for  a  response  from  the  callee),  components  utilize  asynchronous communications (where they simply send a message without waiting
      for a response—also known as  fire-and-forget ). Such loose coupling throughout a system can lead to what’s known as an  event-driven architecture  (EDA).
    • Event-driven architecture - Wikipedia, the free encyclopedia

First of all, system architects from old schools with a bunch of developers from ancient would probably design a system in a synchronous scheme for component interaction with Message Queuing support. That’s not EDA at all.

On the other hand, EDA is one of the essential architecture skills you must have before you can fully make use of Message Queuing.

  • The decoupled, asynchronous style of architecture described in the previous point allows the broker itself to scale much  further  and  handle  considerably  more  clients  via  tuning,  additional memory allocation, and so on (known as vertical scalability) instead of only relying upon the ability of the number of broker nodes to be increased to handle many more clients (known as horizontal scalability).

Scalability - Wikipedia, the free encyclopedia

  • Horizontal Scaling
    • Scale horizontally (scale out)
    • To scale horizontally (or scale out) means to add more nodes to a system, such as adding a new computer to a distributed software application.
    • Brokers are distributed software components/nodes. Adding a broker is a kind of scaling out or horizontal scaling.
  • Vertical Scaling
    • Scale vertically (scale up)
    • To scale vertically (or scale up) means to add resources to a single node in a system, typically involving the addition of CPUs or memory to a single computer.
    • Such vertical scaling of existing systems also enables them to use virtualization technology more effectively, as it provides more resources for the hosted set of operating system and application modules to share.
    • So adding memory is a kind of vertical scaling.
    • When doing system tuning by adding more memory or more CPUs or more CPU cores, we are doing vertical scaling.

No comments: