分布式概念基础
微服务(架构风格):把一个单独的应用程序开发为一小套的小服务,每一个小服务运行在自己的进程中,并使用轻量级的通信机制,通常是HTTP、API,围绕业务那里来构建并通过完全的自动化部署来独立部署,这些服务使用不同的编写语言书写,已不同的数据存储技术,并保持最低限度的集中式管理
概括:把大的应用拆分一个个的小的服务,每一个服务互不干扰,独立运行
好处:每一个服务足够内聚,足够小,代码容易理解,这样能聚集一个指定的业务功能需求。开发简单、开发效率提供,一个服务器可能就是专一的只干一件事,微服务能够被小团队单独开发
缺点: 1. 开发人员要处理分布式的复杂性
2. 多服务运维艰难,随着服务的增加,运维的压力也在增大
3. 系统部署互相依赖
4. 服务间通讯成本
5. 数据一致性
6.系统集成测试
7.性能监控
集群、分布式、节点
- 集群:物理形态,将几台服务器集中在一起,实现同一业务,一组计算机,作为一个整体向用户提供一组网络资源,分布式中的每一个节点,都可以做集群,而集群不一定是分布式的
- 分布式:工作方式,将不同的业务分布在不用的地方
- 节点:集群里的一个服务器
远程调用:在分布式系统中,每一个服务在不同的主机,但服务之间需要互相调用SpringCloud中使用HTTP+JSON的方式完成远程调用
负载均衡:为了使每一个服务器不要太忙或者太闲,负载均衡的调用每一个服务器,提高网站的健壮性
常见的负载均衡的算法:
轮询:为一个请求选择健康池中的第一个后端服务器,然后按顺序依次选择,循环
最小连接:优先选择连接数量连接最少,压力最小的后端服务器,会话较长的情况下会考虑采取这种方式
散列:根据请求源的ip的散列(hash)来选择要转发的服务器,可以一定程度的保证特定用户能连接到相同的服务器,应用需要处理状态而要求用户连接到之前相同的服务器,采用这种方式
注册中心:实时的感知到其他服务器的状态,从而避免调用不可用的服务
配置中心:用来集中管理微服务的配置信息
服务熔断、服务降级
服务熔断:
a) 设置服务的超时,调用服务经常失败到达某个阈值,可以开启断路保护机制,后来的请求不再去调用这个服务,本地直接返回默认数据
服务降级:
a) 在运维期间,当系统处于高峰期,系统资源紧张,可以让非核心业务降级运行
降级:当某些服务不处理,或者简单处理(抛异常,返回null,调用Mock数据,调用Fallback处理逻辑 )
API网关:抽象了微服务中需要的公共功能,同时提供了客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,解决很多的API管理难题
微服务架构图: