初识微服务——总结
一 什么是微服务
微服务就是将原本的单体服务拆分为多个独立的细粒度的服务,这些服务通过远程调用的方式(或者说进程与进程之间的通信)实现信息的交流。
单体服务 是通过依赖jar实现进程内的调用。微服务是进程间的调用
二 为什么需要微服务
当单体服务比较大的时候:部署比较耗时、高可用性比较差(线上局部模块功能出问题会影响整体系统)、开发和测试成本增加(修改或新增某一功能,可能整个项目都得修改测试)
三 是否一定要使用微服务架构
不一定,微服务是为了解决在单体应用无法支撑业务膨胀带来的急剧增加的访问量的问题。在项目初期,肯定是要以验证核心业务的可行性为主,这时候单体应用足够支撑。微服务的开发和维护是需要一个相对庞大的团队才能正常支撑的(一般10个人以上)。使用微服务需要团队里需要有真正掌握微服务技术的,需要解决微服务带来的问题,怎么监控节点、监控链路调用,服务治理、调用失败机制等问题
四 微服务的拆分方法、原则
纵向拆分,是从业务维度进行拆分。标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。
横向拆分,是从公共且独立功能维度拆分。标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。
服务拆分不需要追求一步到位,可以先拆分得相对粗粒度一点,随着对系统的熟悉和边界的了解,慢慢再去拆分。
表的sql一般建议每个服务管理自己的sql,单一原则、减少冗余。
服务不是越多越好,还需要考虑 后期维护的人数和成本。
五 微服务架构涉及的组件
服务端(服务描述)、注册中心、客户端、服务监控、服务追踪、服务治理、配置中心
服务描述:一般有xml、restful api、IDL(IDL文件方式通常用作 Thrift 和 gRPC 这类跨语言服务调用框架) 三种
dubbo:基于xml进行服务描述的rpc调用、底层基于websocket进行通信(NIO)
fegin:基于http调用
注册中心:spring cloud的eureka 、常用的zookeepr
服务监控:spring cloud的Actuator ,一般从监控对象(客户端、服务端、接口监控、系统基础环境监控等)、监控指标(请求量、响应时间、错误率),监控维度(全局、时间、核心和非核心业务、机房等)
服务追踪:zipklin, 主要实现接口级联调用的追踪,涉及概念:traceId和spanId
服务治理: 网关实现,考虑负载均衡、服务路由、服务容错、节点管理等。
配置中心:spring cloud config ,提供服务的公共配置和单独配置。
,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义