这是我参与「第五届青训营」伴学笔记活动的第八天,今天了解了微服务的构成及基本概念,服务之间通信和注册以及发布和流量治理等知识。
微服务构成
用户端与服务端之间有网关来处理外界流量。同时微服务架构包含服务配置进行基础化以及链路追踪和监控进行问题定位。
(1)服务治理
包括服务注册发现,负载均衡,扩缩容以及流量和稳定性治理
(2)可观测性
日志采集分析,链路追踪以及监控打点大盘
(3)安全
需要进行身份验证,认证授权,访问令牌以及传输加密等
基本概念
服务是指一组具有相同逻辑的运行实体
实例是指一个服务中阿每个运行实体,实例可以对应一个或多个进程。
集群指内部的逻辑划分,包含多个实例。
状态服务取决于实例是否存储了可持久化的数据。
服务间通信
微服务通过网络传输进行多个机器的服务间通信。有HTTP,Thrift,gRPC
服务注册及发现
1.同一个服务运行同一段代码,每个实例的地址相同,因此不能写死,或者使用DNS
2.DNS方法可以防止只返回一个实例,但是会存在缓存导致延时,也会由于往往只调用另一个服务中的一个实例无法解决负载均衡的问题,另外也不支持实例探活检测以及域名无法配置端口等问题。
3.如果不异写ip也可以通过新增一个统一的服务注册中心进行存储服务名到服务实例的映射,本质是哈希表。
服务实例上下线流程
先加实例并进行健康检查,再将服务实例注册到服务中心里。然后刷新读条信码。
流量特征
1.终端进入内网的流量往往是http,进入api gateway也是http。
2.http是文本协议,运行性能差,rpc二进制协议,运行效率高。因此通过api gateway 到内部服务端都用的rpc协议。
服务发布
(1).服务不可用
对面service的所有实例均不可用,
(2).服务抖动
个别实例不能用
(3).服务回滚
退回到服务可用的版本
(4).蓝绿部署
分成蓝绿两个集群,先切换成某部分的集群,再对另一部分的集群进行升级,因此需要两倍资源以保证某一部分的集群能处理所有流量。
(5).灰度发布
依次添加一个更新实例,再删除老旧实例直至更新完毕。
流量治理
在API Gateway前基于地区分流;
再进行集群分流少部分为测试集群,其余部分为稳定集群进入服务端;
根据机器再分流,新机器流量更多;
负载均衡
lb组件分配下游实例分布,round robin绝对公平策略,ringhash等
稳定性治理
线上服务总会出问题
1.限流
在接受一方的服务端拒绝掉一部分流量
2.熔断
发送一方直接拒绝掉上游流量
3.过载保护
检测到一定值时才拒绝
4.降级
保证重要的 工作,暂时拒绝不重要的流量