Native cloud era, micro-services in the end should be how to play?

Alt

In the micro-services birth, and not too many options programs: the election of a registry used for service registration and discovery, load balancing and fault tolerance through the client SDK, and then with the logging, monitoring, call chain full set of observation means, a micro services architecture will be established.

As the most popular business development language, Java system in the birth of many micro-service architecture, such as Spring Cloud. Use Spring Cloud, Spring technology stack developers can quickly develop and manage micro services, feature-rich system for other language developers who envy.

Native in the cloud era, Kubernetes rapid spread, in addition to addressing the micro-application orchestration services they need, stretching, and other functions outside the keep-alive, Kubernetes in itself with a service discovery, configuration management, load balancing and gateway. If so, then we can no longer focus on whether the registry service and governance framework, based solely on Kubernetes build micro-service system?

Many companies have been attempts in this regard, after the attempt to discover the richness of function in terms of governance, large-scale cluster efficiency, there are still not satisfied with the place. Then, and later the birth of governance more feature-rich service grid architecture, so that service is greatly enhanced governance capacity Kubernetes these projects soon got the attention of a wide range of, for example Istio.

Then, in the cloud native era, our micro-service system in the end should be how to build and maintain it?

Kubernetes good application scheduling capabilities, making it a micro-service deployment, scalable, best management tool. If it is to do technology selection for the new business, it is recommended to use both direct and Kubernetes container to deploy and manage applications, rather than also using physical server or virtual machine. In regard to service management, currently have the following options:

Use only Kubernetes:

Kubernetes in itself has a service discovery, configuration management, load balancing and gateway, and it looked just Kubernetes can use the micro-service system to build up. However, there are problems with this approach. E.g:

  • Flow control inadequate capacity - the lack of ability to fuse, no grayscale control;
  • Performance issues when large-scale use - based service discovery process Kubernetes Service Iptables need to go through the discovery process or the IPVS, large-scale cluster performance impact will be more obvious.

In addition, many of the observed features are also need some code integration can play a role.

Use Kubernetes deploy + Spring Cloud (or Dubbo, etc.) services Governance:

I believe that this way is the most mature one way, you can make full use of their advantages Kubernetes and Spring Cloud (etc. or Dubbo). In this way a good performance, full-featured, also has a large stable of online cases. But there also involves a problem: a language other than the language and frameworks rely --Java complete lack of service governance framework.

Use Kubernetes deploy + Istio (or equal Linkerd) service governance:

Service Grid is the most attention this year to win the way, completely separate the business logic and management services cut. This approach does not rely on language and framework, without modifying the application code logic, as long as you can access the grid using the grid to provide a full range of traffic management, policy management, observation capabilities and security capabilities. Jingdong internal cloud has hundreds of online services run in the service grid, the use of grid technology reduces the cost of access to these services access security, observation, traffic management and other functions, through this process also accumulated a lot of optimization and operation and maintenance experience. However, the complexity of the grid architecture, and after a delay introduced two network proxy is still unavoidable problem.

Let's take a detailed look at again after two ways.

Kubernetes deploy + Spring Cloud Services Governance

For Java business R & D engineers, this way of feeling is Spring Cloud too "simple", while Kubernetes too "difficult" the.

Spring Cloud was "simple." Standard Spring Boot development approach, the introduction of several packages, service discovery, load balancing, things have been blown. Business R & D engineers will be happy to split the service. Chai Wan on-line services such as real run for some time, only to find the Spring Cloud too difficult. Monitoring system whether there is an exception to this line of work, complexity better than before monitoring service monomer several orders of magnitude. Once the line a little problem, like check out, I do not know which service to check on this. Call chain looks very strong, with them not so easy. May also appeared in such a dilemma: I heard that the boss over micro service: the boss heard the finished micro service, asked after the line is not as gray can be released as the Internet company, only to find the results of the official Spring Cloud did not even offer this capability .

Kubernetes very "difficult." A bunch of concept, what Pod, CNI, Replication Controller, Persistent Volume ... and casually put forward a long list of things need to write yaml, all kinds of things also are using command-line operation. But in fact, it Kubernetes the application delivery greatly simplified. Previously the most complex service dependency management, resilient and elastic, fault recovery capability, Kubernetes have provided support. And you only declare what you expect to achieve the goal, Kubernetes will automatically help you complete a variety of specific steps behind.

So, if you want to use this program, there will be some suggestions:

  • First set of deployment, management, construction observation system and then do a micro split after service perfect;
  • The use of a dedicated team directly or use a cloud service to complete the entire system of construction and operation and maintenance;
  • After the perfect system construction, operation and maintenance business to business R & D as much as possible themselves.

In order to make the business R & D engineers to build micro-service system can more easily use Kubernetes and Spring Cloud. Jingdong micro cloud services platform product to do The following improvements:

  • A platform, full-screen operation, you can complete the entire deployment, management, observation and other online operation and maintenance work;
  • It includes logging, monitoring, call chain, such as a full angle dependent pattern observation capabilities;
  • Kubernetes shielding the underlying technical details, hosting registration center, distribution center, call chain analysis and other back-end services, so the focus of R & D engineers can return to the business itself;
  • Standard Spring Cloud expansion capability, increase service management and routing authentication function, you can call more precise control.

Click [ Read ] to see how the micro-service platform by K8S manage Spring Cloud applications.

Kubernetes deploy + Istio service governance

For business R & D engineers, if Kubernetes has been difficult, then Istio even harder. Istio difficult mainly reflected in the following aspects.

  • The concept complex: it is a lot of new concepts, Virtual Service, Destination Rule, Subset, Service Entry ... ...
  • Architecture complex: contains too many system components, Pilot, Mixer, Galley, Security, Gateways, Kiali ...
    ... the relationship between the components and very complex.
  • Ensure the stability of difficulty: Community frequency of fast release, each version has many stability issues. If the line problems, wait for the next version to solve it and so can not afford to do it ourselves it was too complicated I do not know how to change.

If you are using the service grid plan, there will be some suggestions:

  • After the first micro-finished container service and to consider the introduction of the service grid technology. Do not rely on the grid is not architecture, we want to solve the problem of governance services a decade ago large single application through the grid;
  • The use of a dedicated team directly or use a cloud service to complete the entire system of construction and operation and maintenance;
  • Start with small amounts of the limbic system attempts to access the grid, delay-sensitive applications with caution grid.

In order to make it easier for Grid service Istio floor, Jingdong cloud cloud service grid products made the following improvements:

  • Establish a complete test system, we can discover by prolonged pressure measuring actual business problems and timely release and return optimized to ensure Istio version of stability.
  • Automate complex installation operation, the interface may upgrade after a few simple configuration.
  • Istio complexity of the concept and use of a simplified process, can more easily use the various functions of the grid.

Click https://docs.jdcloud.com/cn/mesh/basic-example Learn how to quickly build service grid system and fast experience.

Welcome Click " Jingdong cloud " for more exciting content

Alt

Alt

Guess you like

Origin www.cnblogs.com/jdclouddeveloper/p/12142858.html
Recommended