点击蓝色“ 乔志勇笔记 ”关注我哟
加个“ 星标 ”,第一时间获取推送的文章哦
restful api ,
xml 配置,
IDL(interface description language) 文件
注册api,反注册api, 心跳api, 订阅api, 变更查询api
保证高可用,一致性
注册了哪些服务,该服务被谁订阅了
课后问题: 注册中心 和 传统的dns 服务发现的区别
1)注册中心自动化,dns人工配置
2)客户端负载均衡,dns服务端负载均衡
3)注册中心有主动的健康检查机制,dns 较被动,调用时统计检查
比如spring cloud ,dubbo 框架,grpc框架
1、http通信
基于http通信
2、socket通信
基于tcp协议
四个步骤 : 服务器socket监听、客户端socket请求、连接确认、数据传输
服务器监听:ServerSocket通过调用bind()函数绑定某个具体端口,然后调用listen()函数实时监控网络状态,等待客户端的连接请求。
客户端请求:ClientSocket调用connect()函数向ServerSocket绑定的地址和端口发起连接请求。
服务端连接确认:当ServerSocket监听到或者接收到ClientSocket的连接请求时,调用accept()函数响应ClientSocket的请求,同客户端建立连接。
数据传输:当ClientSocket和ServerSocket建立连接后,ClientSocket调用send()函数,ServerSocket调用receive()函数,ServerSocket处理完请求后,调用send()函数,ClientSocket调用receive()函数,就可以得到得到返回结果
同步阻塞方式(BIO):连接数较小
同步非阻塞方式 (NIO):连接数比较多且请求消耗比较轻,比如聊天服务器
异步非阻塞方式(AIO):连接数比较多且请求 消耗比较重的业务场景 ,比如i/o操作的相册服务器
协议契约:消息头,消息体
比如 http协议,dubbo协议
对比因素:支持丰富的数据结构类型,跨语言的支持,性能
文本类xml/json:可读性好
二进制类PB : 压缩比和压缩速度快
一、监控因素:
1、监控对象
用户端监控 : 手机、web的监控
接口监控:
资源监控: 中间件的监控
基础监控: 服务器指标的监控
2、监控指标
请求量:实时请求量 qps , 统计请求量pv
响应时间
错误率:
3、监控维度
全局维度、分机房维度、单机维度、时间维度 、核心维度
二、监控环节
1、数据采集
服务主动上报 、代理收集
2、数据传输
传输方式:udp传输 、kafaka传输
传输格式:pb对象、json字符串
3、数据处理
数据聚合: 接口维度聚合,机器维度聚合
持久化储存:索引数据库,时序数据库
4、数据展示
曲线图、饼状图、格子图
一、优势
1、优化系统瓶颈
2、优化链路调用
3、生成网络拓扑
4、透明传输数据
二、原理(基于美团的MTRACE)
traceId 用于串联一次请求在系统中经过的路径
spanId 区分系统不同服务之间调用的先后关系
annotation 业务 自定义一些自己感兴趣的数据
三、实现
1、数据采集层
服务端返回请求时将上下文数据上报
客户端接受到返回结果时将上下文数据上报(可以容错,对比耗时情况)
2、数据处理层
实时数据处理
针对实时数据处理,一般采用Storm或者Spark Streaming来对链路数据进行实时聚合加工,存储一般使用OLTP数据仓库,比如HBase,使用traceId作为RowKey,能天然地把一整条调用链聚合在一起,提高查询效率。
离线数据处理
针对离线数据处理,一般通过运行MapReduce或者Spark批处理程序来对链路数据进行离线计算,存储一般使用Hive。
3、数据展示层
调用链路图
一次调用的整体情况(总耗时,深度,层数,调用次数) ,每一层的具体情况(各层次数,每次耗时)
调用拓扑图
系统应用间的依赖关系,依赖调用的qps/平均耗时
课后问题:
服务监控系统和服务追踪系统的区别
数据采集维度不同:监控系统采集单个服务或整体的详细业务数据、日志、服务状况,追踪系统采集埋点数据
关注点不同:追踪系统更关注单次服务调用的性能或故障,监控系统关注的是服务整体的运行状况
互补关系:服务监控及时发现问题,服务追踪方便调查分析问题。
从不同角度确保服务调用的成功率
一 、节点管理(节点健康状态)
1、注册中心主动摘除机制
2、服务消费者摘除机制
服务消费者摘除更合理一些
二、负载均衡(节点访问优先级)
1、随机算法 2、轮询算法 3、最少活跃算法 4 、一致性hash算法
如果后端服务节点的配置没有差异,同等调用量下性能也没有差异的话,选择随机或者轮询算法比较合适;如果后端服务节点存在比较明显的配置和性能差异,选择最少活跃调用算法比较合适。
三、服务路由(节点访问优先级)
1、灰度发布 2、多机房就近访问
四、服务容错(调用的健康状态)
1、failover :失败自动切换 ,需幂等
2、failBack 失败通知,需根据失败情况进行处理
3、 failcache 失败缓存 ,等待一定时间后重试
4、failfast 快速失败 记录失败日志
一般情况下对于幂等的调用,可以选择FailOver或者FailCache,非幂等的调用可以选择FailBack或者FailFast。
近期文章:
5种分布式锁实现的对比?
Java并发编程学习体系
java8 Stream 史上最全总结
Java 网络编程"初探"
redis 知识点总结
java 核心技术学习总结 (一)
spring中"投机取巧"地限制 用户同时登陆
如果你喜欢本文
请长按二维码,关注 乔志勇笔记