2014作为代表公司去学习微服务,经过一番打拼,如今也算是微服务的布道师。
这两年,微服务这个概念火了,火到什么程度呢?2016年有一个统计说,两千家企业里,30%
在使用微服务,15%在实验开发和测试微服务架构,24%在学习微服务准备转型,只有剩下的30%的企业没有使用微服务。
什么是微服务
微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
为什么这么多公司会选择微服务。
微服务架构优势
复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。
独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。
技术选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。
容错:当某一组件发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。
扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。
Java语言相关微服务框架
1.Spring Boot
Spring Boot的设计目的是简化新Spring应用初始搭建以及开发过程,2017年有64.4%的受访者决定使用Spring Boot,可以说是最受欢迎的微服务开发框架。利用Spring Boot开发的便捷度简化分布式系统基础设施的开发,比如像配置中心、注册、负载均衡等方面都可以做到一键启动和一键部署。
2.Spring Cloud
Spring Cloud是一个系列框架的合计,基于HTTP(s)的RETS服务构建服务体系,Spring Cloud能够帮助架构师构建一整套完整的微服务架构技术生态链。
3.Dubbo
Dubbo是由阿里巴巴开源的分布式服务化治理框架,通过RPC请求方式访问。Dubbo是在阿里巴巴的电商平台中逐渐探索演进所形成的,经历过复杂业务的高并发挑战,比Spring Cloud的开源时间还要早。目前阿里、京东、当当、携程、去哪等一些企业都在使用Dubbo。
4.Dropwizard
Dropwizard将Java生态系统中各个问题域里最好的组建集成于一身,能够快速打造一个Rest风格的后台,还可以整合Dropwizard核心以外的项目。国内现在使用Dropwizard还很少,资源也不多,但是与SpringBoot相比,Dropwizard在轻量化上更有优势,同时如果用过Spring,那么基本也会使用SpringBoot。
5.Akka
Akka是一个用Scala编写的库,可以用在有简化编写容错、高可伸缩性的Java和Scala的Actor模型,使用Akka能够实现微服务集群。
6.Vert.x/ Lagom/ ReactiveX/Spring 5
这四种框架主要用于响应式微服务开发,响应式本身和微服务没有关系,更多用于提升性能上,但是可以和微服务相结合,也可以提升性能。
Net相关微服务框架
1.NET Core
.NET Core是专门针对模块化微服务架构设计的,是跨平台应用程序开发框架,是微软开发的第一个官方版本。
2.Service Fabric
Service Fabric是微软开发的一个微服务框架,基于Service Fabric构建的很多云服务被用在了Azure上。
3.Surging
Surging是基于RPC协议的分布式微服务技术框架,基于.NET Core而来。
4.Microdot Framework
Microdot Framework用于编写定义服务逻辑代码,不需要解决开发分布式系统的挑战,能够很方便的进行MicrosoftOrleans集成。
Node.js相关微服务框架
1.Seneca
Seneca是Node.js的微服务框架开发工具,可以用于编写可用于产品环境的代码。
2.Hapi/ restify/ LoopBack
这三种框架的分工不同,前两种更适合开发简单的微服务后端系统,第三种更适合用在大型复杂应用开发,还可以用在现有微服务上的构建。
Go相关微服务框架
Go-Kit/Goa/Dubbogo
Go-Kit是分布式开发的工具合集,适合用于大型业务场景下构建微服务;Goa是用Go语言构建的微服务框架;Dubbogo是和阿里巴巴开源的Dubbo能够兼容的Golang微服务框架。
Python相关微服务框架
Python相关的微服务框架非常少,用的比较多的是Nameko。Nameko让实现微服务变得更简单,同时也提供了很丰富的功能,比如支持负载均衡、服务发现还支持依赖自动注入等,使用起来很方便,但是有限速、超时和权限机制不完善等缺点。
微服务已经成为很多大型互联网公司的选择,对于架构师和想要成为架构师的工程师来说,掌握微服务不仅要学会使用相关框架来实现,还要掌握具体用法,在具体的实践中仍然要避开很多坑。
在第六届TOP100全球软件案例研究峰会的入围榜单中,途牛研发总监刘晓涛以旅游平台系统建设为案例,介绍如何快准好的实现系统对新业务的支持,介绍途牛落地微服务架构的实践经历。
我这里也有一份我曾经学习的资料,路线图都可以加群:433540541,免费分享。
相关推荐
2. 微服务的实践者:文档提到何李石,他是七牛云的首席布道师,参与了《Go语言程序设计》的翻译工作,并且具有五年云服务经验,对技术布道有深入了解。七牛云提供的服务包括数据存储、处理、直播云、容器云、大数据...
技术布道师可能是公司内的一线研发人员或架构师,他们理解技术并能以代码为基础向其他开发者宣讲。对于技术布道师来说,技术理解和MarketingSense同样重要。而那些能确立公司技术领导力的布道师,往往是公司的关键...
从一线研发人员或架构师转行,具备良好的口头和书面表达能力,是进入这一行业的基础条件。此外,强烈的传播热情和高超的沟通技巧同样不可或缺。布道师的信念至关重要,他们需要对自己推广的技术深信不疑,才能打动...
微服务架构研讨会专注于帮助开发人员/架构师通过动手部分了解关键的架构范式。 该课程帮助开发人员从单体应用程序思维模式到基于微服务的应用程序开发。 它还帮助开发人员掌握关键微服务基础设施技术(如 Eureka、...
在七牛云存储的首席布道师徐立先生的演讲中,他深入探讨了Docker的相关概念、优势以及七牛云是如何与Docker合作的。 Docker的优势在于其轻量级、高效的特点。与传统的虚拟机技术(VM)相比,Docker容器不需要虚拟出...
一、引子 1986年底,美国“软件危机”日趋严重,同时,美国联邦政府希望能有一套评估软件供应商能力的方法,为此,卡内基·梅隆大学的软件工程研究所(sei)开始正式着手这项工作。sei的w.s.humphrey等人在仔细分析...
百度DuerOS首席布道师曹洪伟在智能企业赋能大会(D会场)上详细介绍了DuerOS在赋能企业方面的应用及其发展路径。 首先,DuerOS是百度推出的一款面向AI服务生活的对话式操作系统。它利用人工智能技术,通过自然的人...
在深入分析张辉先生的《闲话几则》这篇文章时,我们可以提炼出一系列关于软件开发和项目管理的知识点,尤其是在提高程序员效率方面。以下是文章中所涵盖的关键知识点: 1. 程序员效率的重要性 ...
在移动互联网时代,终端设备的性能提升与云端...同时,随着网络技术的进步,3G到4G的演进以及WLAN的普及,使得云端一体的架构更加成熟和可行,为开发者提供了更多的可能性,以满足用户对移动互联网应用的高标准要求。
根据提供的文件内容,以下是相关的知识点: 1. 软件测试的便捷性:张辉(Mr Z)在软件的调试版本中增加了一个后门和一个小控制台。后门和控制台的添加是为了方便进行各种测试,例如,当消息数量超过10000时,测试...
【周鸿祎布道:中国创业者需要导师】 周鸿祎,作为奇虎360的CEO,强调了中国创业者在追求成功时需要导师的重要性。他认为,尽管中国的创业者充满激情和聪明才智,但在快速建立世界级企业的道路上,往往缺乏必要的...
开始行动,成为HarmonyOS校园布道师.pdf
标题中提到的“张辉-布道师-《为什么是python》”指向的是一位名为张辉的布道者正在讲解为什么选择Python语言。描述中作者分享了个人从使用C/C++转向Python的体验,提到了Python给编程带来的便利性和改变,以及它...
在2012年,移动设备市场经历了重要的变化,特别是iOS和Android两大生态系统之间的竞争日益加剧。张辉在其文章《双雄会:iOS 设备与Android 设备盘点》中详细剖析了这一年的技术发展和市场动态。...
文章《关于实践——有感于大学计算机教育》由张辉撰写,这位布道师在文中探讨了大学计算机教育的现状以及对学习实践的重视。他指出,随着新技术和语言的不断涌现,许多人在学习过程中感到焦虑。张辉认为,新概念的...
在软件开发行业,程序员的信誉和专业形象被统称为“credit”。这个词通常被理解为信用,但它远远超出了信用的范畴,包含了同事、领导和团队对程序员能力、工作态度、技术特长和其他个人特质的广泛认同。...
标题《简洁的力量》所指的知识点,实际上是在强调软件开发过程中“简洁”这一美学原则的重要性。在C/C++编程语言中,尤其是在处理字符串匹配问题时,简洁不仅仅是一种风格,更是一种高效解决问题的手段。...
先后供职于迅雷、阿里巴巴、宇通客车,目前在一家独角兽企业做测试开发架构师。 组织成立了郑州地区的软件测试圈子,参与组织多场线下沙龙。 微信公众号“软件测试布道师”维护者。 知识星球“测试开发技术圈”星主...