欢迎来到天天文库
浏览记录
ID:62506560
大小:156.49 KB
页数:17页
时间:2021-05-10
《微服务架构技术栈选型参考手册.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、(Si3鸽学吧微服务架构技术栈选型参考手册Microservicesitsi:鹄学吧一、前言2014年可以认为是微服务1.0的元年,当年有几个标志性事件,一是MartinFowler在其博客上发表了”Microservices”一文,正式提出微服务架构风格;二是Netflix微服务架构经过多年大规模生产验证,最终抽象落地形成一整套开源的微服务基础组件,统称NetflixOSS,Netflix的成功经验开始被业界认可并推崇;三是Pivotal将NetflixOSS开源微服务组件集成到其Spring体系,推出SpringCloud微服务开发技术栈。一晃三年
2、过去,微服务技术生态又发生了巨大变化,容器,PaaS,CloudNative,gRPC,ServiceMesh,Serverless等新技术新理念你方唱罢我登场,不知不觉我们又来到了微服务2.0时代。基于近年在微服务基础架构方面的实战经验和平时的学习积累,我想总结并提出一些构建微服务2.0技术栈的选型思路,供各位在一线实战的架构师、工程师参考借鉴。对于一些暂时还没有成熟开源产品的微服务支撑模块,我也会给出一些定制自研的设计思路。二、选型准则对于技术选型,我个人有很多标准,其中下面三项是最重要的:1.生产级我们选择的技术栈是要解决实际业务问题和上生产抗流
3、量的(选择不慎可能造成生产级事故),而不是简单做个POC或者Demo展示,所以生产级(ProductionReady),可运维(OpsReady),可治理,成熟稳定的技术才是我们的首选;2.一线互联网公司落地产品3tSi:鹄学吧我们会尽量采用在一线互联网公司落地并且开源的,且在社区内形成良好口碑的产品,它们已经在这些公司经过流量冲击,坑已经基本被填平,且被社区接受形成一个良好的社区生态(本文附录部分会给出所有推荐使用或参考的开源项目的GitHub链接)。1.开源社区活跃度GitHub上的stars的数量是一个重要指标,同时会参考其代码和文档更新频率(尤
4、其是近年),这些指标直接反应开源产品的社区活跃度或者说生命力。另外,对于不同业务体量和团队规模的公司,技术选型标准往往是不同的,创业公司的技术选型和BAT级别公司的技术选型标准可能完全不同。本文主要针对日流量千万以上,研发团队规模不少于50人的公司,如果小于这个规模我建议认真评估是否真的需要采用微服务架构。考虑到Java语言在国内的流行度和我个人的背景经验,本文主要针对采用Java技术栈的企业。本文也假定自建微服务基础架构,有些产品其实有对应的云服务可以直接使用,自建和采用云服务各有利弊,架构师需要根据场景上下文综合权衡。这里编辑强力推荐杨波在『极客时
5、间App』上的微服务架构视频白板课程,他用一张图,6分钟时间,深入浅出解释微服务架构中的关键概念。目前是第一季,后面还有第二季。感兴趣的用户还请点击文末阅读原文链接了解详情。三、微服务基础架构关键点下面脑图中芒果色标注的七个模块,我认为是构建微服务2.0技术栈的核心模块,本文后面的选型会分别基于这些模块展开。对于每个模块我也列出一些核心架构关注点,在选择具体产品时,需要尽3可能覆盖到这些关注点。3tsi:鹄学吧RK椚REST迦中心服务咨谱日去监用felSMiCAdhu.kijWTfllSIAM方亦悅制c为布專.氏的富脯聊壌疔邕理微服务基础架构MHric
6、t!U
7、5•,樽暉希理JRZ密源;4理F图是我近期工作总结和参考的一个微服务技术体系,我想同时分享给一线架构师或者工程师参考,其中粉红色标注的模块是和微服务关系最密切的模块,大家在做技术选型时,可以同时对照这个体系微服务架构总体技术体系_丄程疋農旬««7tsi:鹄学吧7tsi:鹄学吧里詳贾浅•耳憤*0注坪IAM汁薄网曲1厚補M(X监捡真金L-=_JIDC7tsi:鹄学吧四、服务框架选型服务框架是一个比较成熟的领域,有太多可选项。SpringBoot/Cloud[附录12.1]由于Spring社区的影响力和Netflix的背书,目前可以认为是构建Java
8、微服务的一个社区标准,SpringBoot目前在GitHub上有超过20k星。基于Spring的框架本质上可以认为是一种RESTful框架(不是RPC框架),序列化协议主要采用基于文本的JSON,通讯协议一般基于HTTP。RESTful框架天然支持跨语言,任何语言只要有HTTP客户端都可以接入调用,但是客户端一般需要自己解析payload。目前Spring框架也支持Swagger契约编程模型,能够基于契约生成各种语言的强类型客户端,极大方便不同语言栈的应用接入,但是因为RESTful框架和Swagger规范的弱契约特性,生成的各种语言客户端的互操作性还
9、是有不少坑的。Dubbo[附录12.2]是阿里多年构建生产级分布式微服务的技术结晶,服务治理能
此文档下载收益归作者所有