(一)分布式系统与微服务

一、分布式系统

定义:分布式系统(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
  • ……

Spring Cloud Alibaba

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




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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值