10|微服务设计:微服务架构与演进
郑建勋
你好,我是郑建勋。
这节课我们来介绍一个重要的系统架构:微服务。
微服务(Microservices)是一种软件架构风格。它以职责单一、细粒度的小型功能模块为基础,并将这些小型功能模块组合成一个复杂的大型系统。
软件开发在短短十余年发生了深刻的变革,以 Docker 为代表的容器技术比传统的虚拟机更轻量,消耗的系统资源更少。同时,通过 Dockefile 等配置文件,我们不仅可以定义服务构建规则、启动参数等,还能够定义服务所需的环境依赖。我们也可以保证一个容器重建后可以和之前的容器有相同的环境和行为。这极大地降低了开发以及服务部署、运维的成本,让部署更多的原子服务成为了可能。
当前的大型互联网公司,业务规模和流量日渐增长,整个服务集群规模也越来越大,但是服务却拆分得越来越细。所以这节课,我们就来拆解一下,在构建微服务架构的过程中,我们面临的挑战以及需要具备的技术,让你对于微服务架构有更深入的理解。
单体服务 VS 微服务
企业的系统架构通常是由业务驱动的,小企业或新的产品线在业务刚刚起步阶段,代码少、功能也简单,这时我们一般会把所有功能打包到同一个服务中,使用单体服务具有较高的开发效率。
但是,系统的架构也需要与时俱进。随着访问量逐渐变大、业务模式越来越复杂,相似的功能开始组建起一个模块,模块与模块之间需要相互调用。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
微服务架构是当前软件开发领域的重要趋势之一,以其职责单一、细粒度的小型功能模块为基础,有效解决了系统复杂度和扩展性的挑战。本文深入探讨了微服务架构的优势和挑战,包括技术异质性、稳健性、扩容灵活性、团队效率提升等优势,以及模块耦合、团队管理、开发效率下降等挑战。此外,文章还涵盖了微服务的边界设计原则、通信方式、服务发现与负载均衡等关键问题。总的来说,本文为读者提供了深入理解微服务架构的视角,使其能够全面了解微服务架构的优势、挑战以及相关的设计原则和实践技巧。文章还提出了思考题,引发读者对当前系统是否适合微服务架构设计以及Service Mesh的作用进行思考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 徐石头A1: 现在做的是一个短视频的新闻app,正在逐渐往微服务方向演进,预计分三个阶段 第一阶段:搭建基础的微服务功能,实现微服务之间的通信; 第二阶段:为各个模块构建服务容错、分布式配置中心、分布式链路追踪能力; 第三阶段:进一步实现微服务网关、消息驱动和分布式事务 技术选型如下 配置中心:Nacos (配置项管理和热更新) 注册中心:Nacos (服务注册和发现) 服务容错: Sentinel (降级、熔断、流量整形) 链路追踪:Skywalking 负载均衡:Aliyun Server Load Balancer 消息中间件:Kafka 日志:阿里云SLS 网关:kratos-gateway 通信协议:gRPC/Http 数据库:MySQL 缓存:Redis 当前采用DDD方式划分各个业务域,核心域:短视频,直播。通用域:评论,账号,点赞,关注,投稿,敏感词。支撑域:视频存储,消息推送。 当前最困难的是拆分微服务的粒度,拆的太细不好维护和测试,性能也有影响,拆的太粗无法体现微服务优势。老师有什么建议? A2: 架构还没演进到这一步,只是大概知道有这个概念,为了剥离微服务中的业务和通用功能,让它专注实现业务,运用的是分层思想。简单比方,解析HTTP协议读写数据的时候无需关心底层TCP怎么实现。2022-11-01归属地:湖南9
- RealmService Mesh 通过sidecar,可以解决不同语言的微服务之间互联、互通,服务统一治理的问题.2022-11-01归属地:浙江5
- G55我当前维护的是一套推荐系统服务。 主要包括 主排序 精排 召回 是三个分立的服务,实际上也是微服务架构。请求先到 主排序 然后由主排序去调用召回服务和精排服务。这样做是因为 精排和召回涉及到大量模型调用计算以及特征处理的工作 比较复杂。主排序主要是负责一些业务逻辑规则的处理。2022-11-01归属地:北京3
- 胖黑微服务之下,每天运维团队跟干仗一样2023-03-15归属地:上海
收起评论