这是我参与「第五届青训营 」笔记创作活动的第7天。
引言
今天的课程是关于微服务框架的入门学习,从框架的发展历史开始,演进到微服务框架,学习了什么是微服务框架,知道微服务带来的好处和挑战,学习微服务框架的原理和核心服务功能,最后从实际例子进行总结。这篇文章主要是针对今天课程的记录和总结。
一、本堂课重点内容
本堂课的知识点
- 微服务架构介绍
- 微服务架构原理及特征
- 核心服务治理功能
- 字节跳动服务治理实践
二、详细知识点介绍
- 微服务架构介绍
架构的发展(演进)历史
- 单体架构:所有的功能,业务模块都位于一个机器
- 垂直应用架构:按照业务线垂直划分
- 分布式架构:抽出了与业务无关的公共模块,各个模块服务的调用复杂
- SOA架构:面向服务,具有服务注册中心,整个系统设计是中心化的
- 微服务架构:彻底的服务化,但也具有分布式架构的缺点
- 微服务架构核心要素
服务治理:服务注册,服务发现,负载均衡,扩缩容
可观察性:采集日志,日志分析
安全: 身份验证,认证授权,访问令牌
- 微服务架构原理
服务:一组具有相同逻辑的运行实体
实例:一个服务中的每个运行实体
实例与进程的关系:没有必然对应关系,一般一对一或者一对多
常见的实例承载形式:进程、VM、k8s pod......
服务之间通信:通过网络进行通信,常见的网络协议:HTTP,RPC
- 服务治理功能
服务发布:让一个服务升级运行新的代码的过程
流量治理:流量控制
负载均衡:Round Robin,Random
稳定性治理:限流,熔断,过载保护(负载高的实例,主动拒绝部分请求),降级(负载高的实例只处理级别更高的请求)
三、实践练习例子
请求重试的意义
- 对于调用本地函数的请求重试通常是没有意义的
- 对于调用远程函数的请求重试可以避免一些网络的偶发性错误,减低错误率
请求重试的难点
幂等性:多次执行相同的请求和只执行一次请求的影响相同。如数据库查询操作
实现幂等性的一种方法:每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证。如果验证通过删除token,下次请求再次判断token是否相等,如果不相等即重复提交。
重试策略:限制重试的次数,设置阈值
四、课后个人总结
今天这堂课程学习了微服务框架方面知识的基础,明白了使用微服务框架的好处和挑战,微服务是目前大多数互联网公司的系统架构,对于微服务框架的学习后期还需要继续努力,最好可以联系实际项目,实战非常重要。
五、引用参考
[1] 青训营课程资料 juejin.cn/post/719438…