Microservices and SOA
“Micro service” is a noun, there is no such noun before “micro service”, a catchy noun can make everyone produce a cognitive consensus, which is very important to promote the development of a business, otherwise you call micro service he called small service we are difficult to concentrate on a point.
There is a lot of debate in the industry about the difference between microservices and SOA. Most of the debate is about microservices being more granular, microservices not having AN ESB, microservices communication using lighter protocols than SOA, etc. But there is a paradox about the difference at the micro level.
These differences are just a “best practice” for microservices. I personally understand that microservices differ from SOA in soul
Microservice is the product of the Internet era and SOA is the product of system integration. Microservice is the fragmentation of the system and SOA is the integration of the system.
Microservices and SpringCloud
Because of its popularity, many people equate SpringCloud with microservices, and there is nothing wrong with that. To be precise, SpringCloud is a set of basic framework suitable for the realization of micro-services. SpringCloud is helpful to the implementation of micro-services architecture of instant messaging. SpringCloud works in the form of Java libraries so its level of work is at the application layer (development layer).
SpringCloud provides a basket of solutions to address the various needs and common points in microservices. Eureka provides service registration and discovery, Ribbon implements load balancing on the client side, Feign does a great job of turning REST into strongly typed interface calls, and Config provides a convenient but not flexible configuration center. Hystrix provides circuit breaker solutions, Zuul provides gateway solutions, etc.
Advantages:
1. Provide a complete set of micro service governance solutions
2. Developer-friendly (intrusive code)
Disadvantages:
1. It can only be used by the Java platform technology stack. Of course, SideCar is provided for integrating heterogeneous technologies, but it is limited
2. Developer-friendly (intrusive code)
Third, Kubernetes (k8s)
K8s was born not because of micro-services but because of Docker. It just happened to be in the right place at the right time and coincided with the popular era of micro-services. Docker’s features were especially suitable for micro-services, and K8S further arranged docker conveniently. From the perspective of infrastructure, K8S can be compared to IDC room and room staff, storage and management of physical server (Docker), rack, system, network and so on. From the perspective of micro-services, K8S provides another realization of micro-services by logically abstracting concepts such as Service from the way of infrastructure, just like providing FTP service with N computers networked.
Advantages:
1, provides abstraction in the base layer, no intrusion into the code
Disadvantages:
1. Weak management of micro-services, such as fusing and limiting current, should not be done by K8S.
Four, Istio
Istio’s theoretical concept is Service Mesh, and we don’t have to get caught up in the concept. It’s actually a form of microservice implementation, similar to the SideCar model above. The main idea is separation of concerns. It is not integrated into K8S, resulting in confusion of responsibilities. Istio provides microservice governance methods such as service discovery, negative intercept balancing, traffic limiting, link tracing, and authentication by allocating agents for services.
Istio was originally designed in conjunction with K8S, and Istio in conjunction with K8S is an awesome landing micro-service architecture