这章具体介绍微服务。
1.微服务的目的
2.微服务的特点
3.微服务的核心要点
微服务的目的
以拆分和服务化为基础,将海量用户产生的大规模的访问流量进行分解,采用分而治之的方法,达成用户需要的功能指标,并同时满足用户对高可用、高性能、可伸缩、可扩展和安全性的非功能质量的要求。
微服务的特点
1.微服务把每个职责单一的功能放在一个独立的服务中。
2.每个服务允许在一个独立的进程中。
3.每个服务有多个实例在运行,每个实例可以运行在容器化平台内,达到平滑扩展伸缩的效果。
4.每个服务有自己的数据存储,实际上,每个服务应该有自己独享的数据库、缓存、消息队列等资源。
5.每个服务应该有自己的运营平台,以及独享的运营人员,这包括技术运维和业务运营人员。每个服务都高度自治,内部的变化对外透明。
6.每个服务都可根据性能需求独立的进行水平伸缩。
微服务的核心要点
微服务架构中职能团队的划分
微服务架构按照业务的功能进行划分,每个单一的业务功能叫做一个服务,每个服务对应一个独立的职能团队。
微服务的去中心化治理
微服务倡导去中心化的治理,不推荐每个微服务都使用相同的标准和技术来开发和使用服务。
微服务的交互模式
在微服务领域,微服务之间的交互通过定义良好的接口来实现,不允许使用共享数据来实现。通常使用RESTful样式的API或者透明的RPC调用。
微服务的组合
根据业务流程处理的需要,以一定的顺序调用依赖的多个微服务,对依赖的微服务返回的数据进行组合、加工和转换,最后以一定的形式返回给使用方。
微服务的容错模式
1.熔断
当服务的输入负载迅速增加时,如果没有有效的措施对负载进行熔断,则会使服务迅速被压垮,服务被压垮会导致依赖的服务都被压垮,出现雪崩效应,因此,可通过模拟家庭的电路保险开关,在微服务架构中实现熔断。
2.限流
针对服务突然上量,我们必须有限流机制,限流机制一般会控制访问的并发量,例如每秒允许处理的并发数及查询量、请求量等。
2.1计数器
通过原子变量计算单位时间内的访问次数,如果超过阈值,则拒绝后续的请求,等到下一个单位时间再重新计数。
2.3令牌桶
通过一个线程在单位时间内生成固定数量的令牌,然后将令牌放入队列,每次请求调用需要从桶中拿取一个令牌,拿到令牌后才有资格执行请求调用,否则只能等待拿到令牌再执行,或者直接丢弃。
微服务的粒度
按照微服务的初衷,服务要按照业务的功能进行拆分,知道每个服务的功能和职责单一,甚至不可再拆分为止,以至于每个服务都能独立部署,扩容和缩荣方便,能够有效地提高利用率。拆的越细,服务的耦合度越小,内聚性越好,越适合敏捷发布和上线。
网友评论