《2019年从领域驱动到Kubernetes的微服务实践.pdf》由会员分享,可在线阅读,更多相关《2019年从领域驱动到Kubernetes的微服务实践.pdf(54页珍藏版)》请在三个皮匠报告上搜索。
1、从领域驱动到Kubernetes的微服务实践云原生的设计理念云原生(Cloud Native)是一种应用架构。包含超越12要素,DevOps,持续交付,微服务,敏捷基础设施等几大主题。采用基于云原生的技术和管理方法,可以享受“云”的高效和持续的服务能力。云原生应用DevOps微服务MicroServices持续集成交付Continuous Delivery超越12要素The Twelve-Factor App敏捷基础设施Agile I云原生微服务架构支撑数字化转型迭代更快:各模块独立开发、部署质量更高:去雪崩效应,秒级恢复应对爆发:架构到资源全弹性伸缩免单体架构微服务架构组件高度耦合,开发部署
2、效率低单体结构,可靠性差单体部署,弹性缺失物理机缺乏弹性传统云计算仅关注资源弹性容器云资源和架构全弹性伸缩什么是微服务架构微服务架构(Micro Services Architecture,MSA)提倡将庞大规模应用分割成一系列细粒度的服务,每个服务专注于单一业务功能,可独立运行,服务之间采用轻量级通信机制相互沟通、配合来实现完整的应用。相比于一体化架构和SOA架构,MSA在部署效率、伸缩弹性和容错性等方面具备优势,满足当前互联网与云计算趋势下企业IT系统对敏捷性的不懈追求。微服务架构康威定律各模块独立部署敏捷开发技术异构性强传统单体应用架构服务化拆分后的架构领域驱动设计可扩展性微服务架构当前
3、应用情况微服务生态群微服务架构在大型互联网公司中已有成熟的规模化应用。美国Netflix、Amazon、Wikipedia、Twitter等;日本Line、Cookpad等;以及国内一线互联网公司已将自身IT架构基于微服务完成重构;而在下游企业用户端,制造业和金融业有望率先实现规模化落地。业内尖端企业微服务实践微服务全景图HailoAmazonNetflixK微服务架构如何实现领域驱动设计DDD概念图 摘取自 DDDChina企业基于微服务架构搭建IT系统,可以主要分为业务系统设计和微服务平台搭建两个部分。企业根据自身业务框架进行梳理,有效切分现有的单体架构并进行领域驱动设计(DomainDr
4、ivenDesign,DDD),这一过程体现明显个性化,企业往往通过外部引入咨询专家+内部IT团队配合的方式完成;另一方面,需要基于容器云技术搭建微服务平台以实现多组件管理,主要包括开发框架、以及周边配套工具链等全套体系的构建。微服务架构实现途径服务端架构演变 Spring MVC 垂直烟囱服务化初期 Dubbo 服务数量20+服务化中期 Spring Cloud+Dubbo(存量)服务数量300+微服务化服务网格化Spring BootHystrixGuavaSleuth+zipkinKafkaELKSpring MVCNginx+LuaMQSpring BootDubboZookeeper
5、DDDSpring BootHystrixIstioEnvoyJaegerELK云音乐微服务历程 单体应用阶段云音乐早期的架构的发展,经历的几个阶段遇到的问题开发难:结构复杂,频繁失忆测试难:全量回归迭代效率低缺乏服务治理手段优化思路大中台,小前台架构思想提高横向扩展能力实现灵活服务熔断、降级策略服务化初期 烟囱阶段遇到的问题开发难:结构复杂,频繁失忆测试难:全量回归迭代效率低缺乏服务治理手段优化思路大中台,小前台架构思想提高横向扩展能力实现灵活服务熔断、降级策略云音乐早期的架构的发展,经历的几个阶段微服务试水初期服务拆分问题需要DevOps平台提供敏捷迭代能力参考DDD、The Twelve
6、-Factor方法论根据业务实际情况逐步设计服务间通信问题服务的通信方式Http、Rpc服务注册和发现,路由、负载均衡等都是需要解决的问题基础设施问题服务器资源分配困难,服务器机型碎片化一台服务器上多个进程互相影响、排障困难,QoS 难以保障服务拆分与领域驱动设计什么是领域模型 模型是一种表达形式,它是我们头脑中某种想法的表达,表述过程即可看作是建模的过程。领域模型是将业务逻辑组织为由状态和行为的类构成的对象模型。软件模型建筑模型高达模型领域驱动设计DDD统一语言分析领域战略设计定义限界上下文战术设计定义实体、聚合、服务等编码形成微服务UI层应用层领域层基础设施层统一语言领域模型问题域限界上下