Microservices, cloud native, Kubernetes and Service Mesh are hot technologies in the distributed field. They do not appear out of thin air and must inherit the advantages of some “predecessors”. Not only do we need to understand these technologies, but we also need to have a deep understanding of their evolution, principles, and so on, so that we can easily apply them to existing projects or retrofits of old systems.

These technologies have a common feature, that is, the whole network is talking about distribution. In fact, it is mainly because of the explosion and growth of data volume, our website and other applications bear the pressure they should not bear. At this time, the ancient Chinese admonitions play a big role: Unity is strength. Therefore, the problem can be solved by spreading the pressure to many different points, and distribution is born from this

So let’s see what’s going on with distributed systems?

Distributed system

A distributed system is a system in which its components are distributed on networked computers and communicate with each other and coordinate actions by passing messages. This definition leads to the following important characteristics of distributed systems: component concurrency, lack of a global clock, and component failure independence.

We look at a few examples of modern distributed systems, including Web search, multiplayer online gaming, and financial transaction systems, and examine the key trends driving distributed systems today: the ubiquitous nature of modern networks, the emergence of mobile and ubiquitous computing, and the increasing importance of distributed multimedia systems. And the tendency to see distributed systems as practical systems. The chapter then emphasizes resource sharing as the primary motivation for constructing distributed systems. Resources can be managed by the server and accessed by clients, or they can be encapsulated as objects and accessed by other client objects.

The challenges of constructing a distributed system are dealing with the heterogeneity of its components, openness (allowing for adding or replacing components), security, scalability (the ability to function properly as the load or number of users increases), troubleshooting, component concurrency, transparency, and providing quality of service. Finally, the Web is discussed as an example of a large-scale distributed system and its main features are introduced.

Need this document, pay attention to + forward, private letter “information” can be viewed to obtain

Microservices, Cloud native, Kubernetes, Service Mesh

Based on the above distributed system design principles, the following technologies have emerged in the real development environment, including microservices, cloud native, Kubernetes, Service Mesh, etc. Let’s move on

Get straight to the point

RPC

Every distributed system is inseparable from multi-process communication, including IPC communication between multi-process on the local machine and network-based remote communication technology, which is one of the core and key basic technologies in distributed system architecture. Apart from the communication protocols of various special systems such as NFS, FTP, SNMP, SMTP, POP3, various general communication technologies are also developing and changing, such as from the oldest RPC remote communication technology to the once popular SOAP(Web Service) protocol. And then there’s HTTP REST, which is a big hit. Nowadays, due to the rise of mobile Internet and big data era, various RPC architectures supporting multi-language and high-performance transmission become hot technologies again.

memory

After CPU, memory is probably the most important computing resource. The cache middleware, high performance data processing system and the popular big data platform which have become the standard of distributed system are inseparable from the deep understanding and clever use of computer memory. In this chapter we’ll explore this area that feels both familiar and complex.

Distributed storage

Distributed file system is a very important infrastructure in large distributed system. The most important technology in Hadoop is not MapReduce, but HDFS. In addition to HDFS, Spark can be used with GlusterFS, an older distributed file system. The most important subsystem in OpenStack that can operate independently is the distributed object storage system Swift. Docker and Kubernetes container technology still needs to realize the shared storage problem in batch processing tasks through distributed file system. Not to mention, countless e-commerce systems need a distributed file system to store tons of photos. Therefore, it is very important for a distributed system architect to master the knowledge and skills related to distributed storage.

Distributed computing

Regardless of the distribution of network, memory or storage, their ultimate goal is to realize the distribution of computing: data flow on each computer node, and each computer node can access the shared data in a certain way, and the output result of the final distributed computing is stored and output persistently. Distributed computing is one of the most important capabilities and targets in distributed systems and one of the key technologies in big data systems. After years of development and evolution, there have been many mature distributed computing open source programming frameworks and platforms in the industry. As architects, we should understand and master these frameworks and platforms as much as possible.

Message middleware

In the previous chapters, we learned all kinds of basic knowledge and skills necessary to build a distributed system, such as the basic theory of distributed system, network programming technology, RPC architecture, memory computing, distributed file system, distributed computing framework, etc., but it is far from enough just to master these contents. We also need to learn and master some commonly used middleware in distributed system, which is mainly used in some common business scenarios in distributed system: data full-text retrieval, log and message processing, database fragmentation, website load balancing, etc. Due to limited space, this chapter only gives a comprehensive introduction to the two widely used and relatively complex middleware, full text retrieval and message queue.

Microservices Architecture

Microservice architecture is a very popular concept and an inevitable result of technological development. Microservice architecture is not a vague and empty term. Its core concepts and architecture principles are real. Although there are no recognized technical standards and draft specifications for microservice architecture, there are some influential open source microservice architecture platforms in the industry. Architects can choose a suitable micro-service architecture platform according to the technical strength of the company and the characteristics of the project, and implement the micro-service transformation or development process of the project safely.

Well, about distributed, I will introduce here, from principle to practice have, there is a need for these two documents of friends, pay attention to the public number: Java architect Alliance, daily update technology good article