文章目录

  • 一、分布式系统
  • 二、微服务
  • 1、何为微服务?
  • 2、微服务与分布式系统有什么关系?
  • 3、微服务与微服务架构
  • (1)微服务
  • (2)微服务架构
  • 4、微服务的优缺点
  • (1)优点
  • (2)缺点
  • 5、微服务架构的问题
  • 6、微服务技术栈
  • 7、微服务解决方案


一、分布式系统

定义:分布式系统(distributed system)是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。------《分布式系统原理及范型》

一般来说,分布式系统是由一组通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成的系统。

分布式系统是建立在网络上的软件系统。

分布式系统出现的目的是为了什么?
答:是为了用廉价的普通机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器去处理更多的数据。

首先要明确,只有当单个节点的处理能力满足不了日益增长的计算存储任务时,且硬件提升高昂到得不偿失时,应用程序不能进一步优化时,我们才考虑分布式系统。

二、微服务

1、何为微服务?

微服务化的核心就是将传统一站式应用,根据业务拆分成一个一个服务,彻底地去耦合,每个微服务提供单个业务功能,一个服务做一件事情。从技术的角度看就是一个小而独立的处理过程,类似进程的概念。能够自行启动和销毁,拥有自己独立的数据库。

2、微服务与分布式系统有什么关系?

因为分布式非常复杂,所以一直以来都没有权威的架构和设计,更多的只是前人的积累和实践。前人总结出了许多有用的理念,积累了许多经验,开发了很多实施分布式的软件。近几年来,最热门的分布式架构非微服务架构莫属。它是由美国科学家Eric Brewer在其博客上发表的概念。

微服务是分布式系统设计和架构的理念之一。但是从微服务的风格来看,它并不是为了克服所有的分布式系统的缺陷而设计的,而是为了追求更高的可读性、可用性和简易性。但与此同时,也弱化了其一致性,正如这句老话——“两害相较取其轻者”。

所以,微服务并不能解决所有的分布式系统的问题,它只是寻求一个平衡点,让架构师能够更为简单、容易地构建分布式系统。但微服务并非金科玉律,对于一些特殊的分布式需求,还需要我们使用其他的方法来得以实现,正如方法是死的,而人是活的,需要实事求是地解决问题。

3、微服务与微服务架构

(1)微服务

强调的是一个服务的大小,他关注的点是具体解决某一个问题提供对应服务的一个服务应用,狭义的看,可以看作是IDEA中的一个微工程或者Moudle。

(2)微服务架构

是一种架构模式,提倡的是单一程序划分成一组小的服务,服务于服务之间相互协调,相互配合,为用户提供最终价值。

模块化、功能化

4、微服务的优缺点

(1)优点

  • 单一职责原则。
  • 每个服务足够内聚,足够小,代码容易理解。
  • 开发简单,效率高,一个服务只干一件事(一般情况下)。
  • 小团队开发。
  • 松耦合,开发与部署相对独立,有功能意义的服务。
  • 能使用不同语言开发。
  • 易于与第三方集成。
  • 已被理解,修改和维护。
  • 允许利用融合最新技术。
  • 只是业务逻辑代码,不与前端融合。
  • 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库。

(2)缺点

  • 开发人员要处理分布式系统的复杂性。
  • 运维难度随着服务的增加而增大。
  • 系统部署依赖性大。
  • 服务间通信成本大。
  • 数据一致性。
  • 系统集成测试复杂。
  • 性能监控难。

5、微服务架构的问题

(1)这么多服务,客户端如何访问?(服务路由问题–API网关)
(2)这么多服务,服务之间如何通信?(服务通信问题–同步/异步调用)
(3)这么多服务,如何治理?(服务高可用问题–服务的注册与发现)
(4)服务挂了怎么办?(服务降级问题–熔断机制)

6、微服务技术栈

微服务条目

落地技术

服务开发

SpringBoot、Spring、SpringMVC…

服务配置与管理

Netflix Archaius、Alibaba Diamond…

服务注册与发现

Netflix Eureka、Consul、Zookeeper、Alibaba Nacos…

服务调用

Rest、RPC、gRPC…

服务熔断器

Netflix Hystrix、Envoy、Resilience4j、sentinel…

负载均衡

Netflix Ribbon、Nginx…

服务接口调用(客户端调用服务的简化工具)

Feign…

消息队列

Kafka、RabbitMQ、ActiveMQ、RocketMQ…

服务配置中心管理

Spring Cloud Config、Chef…

服务路由(API网关)

Netflix Zuul、Spring Cloud Gateway …

服务监控

Zabbix、Nagios、Metrics、Specatator…

全链路追踪

Zipkin、Brave、Dapper…

服务部署

Docker、OpenStack、Kubernetes…

数据流操作开发包

Spring Cloud Stream

事件消息总线

Spring Cloud Bus

7、微服务解决方案

针对上面第5条的四个问题,衍生出很多微服务解决方案

(1)Spring Cloud Netfilx -------一站式解决方案

  • 服务路由:ZUUL组件
  • 服务通信:Fegin(基于HTTP,同步并阻塞)
  • 服务注册与发现:Eureka
  • 熔断机制:Hystrix
  • ……
    2018年底,Netflix宣布无限期停止维护,生态不再维护,就会脱节!
    (2)Apache Dubbo + Zookeeper-------半自动解决方案,需要整合
  • 服务路由:无,需要自己实现或使用第三方组件
  • 服务通信:Dubbo,高性能的Java RPC框架(通信框架)
  • 服务注册与发现:Zookeeper
  • 熔断机制:无,需借助Hystrix
  • ……
    不完善,但胜在自由度高,适合能自己实现组件功能的大公司使用
    (3)Spring Cloud Alibaba -------一站式解决方案
  • 服务路由:Gateway
  • 服务通信:Dubbo
  • 服务注册与发现:Nacos
  • 熔断机制:Sentinel
  • ……

微服务怎么进行分布式事务 分布式微服务器_分布式系统

目前又提出一种解决方案:服务网格(Service Mesh)
或成为下一代微服务标准,代表方案:istio

微服务架构之所以会产生这四个问题的根本原因是——网络不可靠