读书系列-《微服务实战》
一、前言
《微服务实战》读书总结,业务的发展推动技术的发展,技术发展服务于业务,这两者是相辅相成的状态。微服务也是源于业务的发展慢慢形成的软件开发技术,尤其在大厂中因为业务的用户量,复杂度等呈指数级的增长的时候会形成业务与技术的矛盾,所以就会提出新的技术理念,依据理论创造性的产生具体的技术实战。在微服务之前,应用系统经过单体系统,分布式系统,到发展成今天流行的微服务。本书也是作者基于当前微服务技术结合具体的案例介绍了整个的实战过程,通过阅读本书主要总结了以下几点。
二、内容
为什么使用微服务技术,首先是源于业务越来越复杂的挑战,原来的单体系统或者分布式系统不能满足业务,并且制约业务的发展,单体与分布式本质还是一个聚合了所有业务的整体,业务中的不同模块都是高度耦合的关系从而缺乏灵活性。微服务以可拆分、可独立开发、维护、部署的小型业务为单元,然后将这些单元关联在一起,相互提供各自的能力来实现业务功能,所以具有很强的灵活性,对于业务变动能够保持很好的稳定性,这是软件开发技术所要追求的一面。
使用微服务技术面临的问题,微服务技术以小型业务为单元,要通过互相关联的方式协作完成功能。所以就会引入很多技术问题,比如微服务之间的通信问题、事务的一致性问题、如何管理越来越多的微服务、如何跟踪监控微服务等。
如何依据业务划分微服务,书中提到了微服务的划分至关重要,影响着后续业务变化对所有微服务产生的变动,因为后续业务发展会要求新增微服务或者修改当前存在的微服务。那么如何划分微服务?可以依据如下几点进行按业务能力、按用例、按技术能力、不确定性。至于如何才能划分出合理的微服务没有“圣经”,有的是从实战中获取的经验和重构得出的结论。
微服务技术层面的内容,微服务是一个整体的系统架构,其涉及很多针对微服务使用和提高性能的技术方案,比如以下几点:
1、微服务的通信问题,如何提供高性能,高可靠的技术方案,使用gRPC、webapi、thrift、消息事件等。
2、微服务的事务问题,如何实现事务的一致性,由事务强一致性到依据具体情况分别看待的最终一致性,基于CAP理论相应的实践。
3、微服务的治理问题,随着微服务数量越来越多,就必须进行统一管理和自描述,使用一些中间件或者开源技术如consul服务注册与发现、ocelot网关、redis缓存、mq消息队列、polly的重试、熔断,降级,限流等。
4、微服务的部署问题,如何构建微服务高效自动化部署的能力,提到当前的容器化技术Docker,K8S对容器的编排,Dapr的服务网格化将微服务基础能力从业务中抽离出来形成云服务,让开发者只要关心业务问题而不用关心微服务基础技术问题,按文中说法提供服务基座,我觉得这也是微服务未来的发展方向。
5、微服务的运维问题,使用Jenkins构建部署流水线,利用Prometheus和Grafana来监控系统,通过提供语言无关的日志技术收集微服务日志,然后利用工具可视化展示如使用Elaticsearch、Kibana和Fluentd一起搭建一套日志基础设施,并且使用Jaeger搭建一套分布式的链路追踪系统。
三、总结
本书使用Python作为开发语言,然后由客户、订单、市场等相关场景的案例提出几个微服务,介绍如何使用微服务开发从0到1也是服务划分、服务开发、服务部署、服务运维的过程,在这些步骤中如何选择工具、开源组件、中间件来构建一个高并发、高性能、高可靠的系统。是一个比较全面了解微服务是什么,使用微服务开发涉及那些技术内容,具体使用的方式方法,推荐看看并且依据案例进行实战,经过实战才会熟悉整个开发过程和相关技术的选型、技术的使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?