微服务学习-请收藏
2021-07-22 00:02:45 26 举报
AI智能生成
微服务学习-请收藏
作者其他创作
大纲/内容
跨语言平台,组织内外皆可
缺点:使用了HTTP作为通讯协议,相比TCP协议,性能较差
RESTful API
缺点:修改或者删除PB字段不能向前兼容
IDL文件
java平台,一般用作组织内部
缺点:不支持跨语言平台
XML配置
服务描述
注册中心架构
架构
1.服务提供者在启动时,根据服务发布文件中配置 的发布信息向注册中心注册自己的服务
2.服务消费者在启动时,根据消费者配置文件中的配置服务信息向注册中心订阅自己所需要的服务
3.注册中心返回服务者提供地址列表给服务消费者
4.当服务提供者发生变化,比如有节点新增或者销毁,注册中心将变更通知给服务消费者
工作流程
两个服务是否会相互调用?
问题?
注册中心
http通信
socket通信
网络连接
同步阻塞(BIO)
同步非阻塞(NIO)
异步非阻塞(AIO)
服务端处理请求
通信框架
例如http
问题:传输协议和网络连接不是应该一致吗?
数据传输协议
通信协议
性能高、高压缩
Protobuf
可读性好
json
xml
序列化和反序列化
服务框架
用户端监控
接口监控
资源监控
基础监控
监控对象
请求量
响应时间
错误率
监控指标
全局维度
分机房维度
单机维度
时间维度
对核心业务应当重点保障,分开监控
核心维度
监控维度
通过在业务代码中或者服务框架中计入数据收集代码,主动上报服务的调用信息。
服务主动上报
先把调用的详细情况记录到本地日志文件中,然后解析日志文件,采集调用信息。
代理收集
注意:过高的采样率会导致系统写入磁盘的I/O过高,影响到正常的服务调用。
数据采集
UDP传输
Kafka传输
数据传输
接口维度聚合
机器维度聚合
数据聚合
索引数据库
时序数据库
持久化存储
数据处理
曲线图
饼状图
格子图
数据展示
问题:能不能把系统监控也列为一个单独的服务?
监控系统原理
服务监控
作用:通过跟踪记录,了解到一次用户请求都发起了哪些调用,经过哪些服务的处理。并且记录每一次调用所涉及的服务详细信息,如果调用失败,可以通过这个日志快速的定位是在哪个环节出现了问题。
优化系统瓶颈
优化链路调用
生成网络拓扑
透明传输数据
作用
用于串联某次请求在系统中经过的位置
traceid
用于区分系统不同服务之间的调用先后关系
spanid
用于业务自己定义一些自己感兴趣的数据
annotation
基本概念
数据采集层
数据处理层
数据展示层
服务追踪
注册中心主动摘除机制
消费者摘除机制
节点管理
随机算法
轮询算法
最少活跃调用算法
一致性hash算法
负载均衡
灰度发布是指,通过类似按尾号进行灰度的规则限定只有一定比例的人群才会访问新发布的服务节点
恢复发布的需要
多机房就近访问的需求
服务路由
服务消费者发现调用失败后,自动从可用的服务节点列表中选择下一个节点进行调用
可以设置重试次数,这种策略要求是幂等的,就是说无论调用多少此,只要是同一个调用,返回的结果都是相同的。一般适合服务器调用是读请求的。
FailOver失败自动切换
服务消费者调用失败或者超时后就不再重试,而是根据失败信息,来决定后续的执行策略。
例如非幂等的场景中,调用失败后,应当查询服务端的状态,看调用到底是否已经生效,如果没有生效可以再调用一次,如果已经生效就不能再次调用。
FailBack失败通知
服务消费者在调用失败或者超时后,不立即发起调用,而是隔一段时间再次调用。可能在一段时间内,服务都有问题,这时候立即调用会加剧问题,
FailCache失败缓存
就是在调用失败后,不在重试,一般在非核心业务的调用时,会采用快速失败的策略,记录一下日志就返回了。
FailFash快速失败
服务容错
服务治理
提供方的信息(应用名)
注册中心地址
dubbo的端口
提供服务接口
声明和本地bean一样实现服务????什么是bean?
服务提供者发布XML配置
消费方应用名
生成远程服务代理,可以和本地bean一样使用服务
消费者发布XML配置
服务发布过程
分组信息
服务名
节点地址
节点其他信息
节点信息
存储服务信息
注册的节点是否在白名单内
注册的cluster(服务的接口名)是否存在
服务的分组是否存在
将节点信息添加到对应的service和cluster下面存储
服务提供者提供注册流程
查看服务分组是否存在
查看cluster是否存在
删除存储中的service和cluster下对应的节点
更新cluster的sign值
服务提供者提供反注册流程
首先从localcache(本机内存)中查找
接着从snapshot(本地快照)中查找
最后从注册中心查找
消费者查询流程
服务消费者从注册中心获取到了服务信息后,就会在本地保留cluster和sign值
消费者每过一段时间,就会调用getSign()从注册中心获取服务端该cluster的sign值,并与本地保留的sign值做对比
如果不一致,就更新班底的localcache和snapshot
服务消费者订阅变更流程
多注册中心
并行订阅服务
批量反注册服务
服务变更信息增量更新
其他
Dubbo
微服务架构是将负责臃肿的单体应用进行细颗粒度的服务化拆分,每个才分出来的服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率
定义
服务拆分颗粒度更细
服务独立部署
服务独立维护
服务治理能力要求高
特点
项目第一阶段主要目标是快速开发和验证想法,架构不适合过度设计。单体应用更加高效、节省成本
初期不适合服务化
根据经验(不是我的),单体应用同时开发的人员超过10人,可以考虑
使用条件
安装业务的关联程度,比较密切的业务拆分为一个微服务
业务维度拆分
按照是否有公共的被多个其他服务调用,且依赖的资源不与其他的业务耦合
功能维度拆分
服务拆分方法
服务如何定义
服务如何发布和订阅
服务如何监控
服务质量
故障定位
主要考虑的问题
如果觉的有用,请帮忙点赞收藏,谢谢!
微服务学习
0 条评论
回复 删除
下一页