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,免费分享。
相关推荐
Docker中文社区上海站活动,演讲嘉宾:徐立,七牛云存储的首席布道师。演讲主题:The Docker Way。
说起布道师和布道,有人觉得陌生,其实它距 离我们很近;有人觉得忽悠,其实它很真实。 技术布道是随着IT产业的兴起而兴起的职业。 与传统的“宣传推广”不同,它是针对特殊产 品、面向特殊人群、采用特殊方法进行...
微服务架构研讨会专注于帮助开发人员/架构师通过动手部分了解关键的架构范式。 该课程帮助开发人员从单体应用程序思维模式到基于微服务的应用程序开发。 它还帮助开发人员掌握关键微服务基础设施技术(如 Eureka、...
布道师行业预测前景、及其发展状况、市场就业等。
一、引子 1986年底,美国“软件危机”日趋严重,同时,美国联邦政府希望能有一套评估软件供应商能力的方法,为此,卡内基·梅隆大学的软件工程研究所(sei)开始正式着手这项工作。sei的w.s.humphrey等人在仔细分析...
奇虎CEO周鸿祎的布道:中国创业者需要导师.docx
程序员的效率最重要 pc成本 软件成本(你知道clearcase有多贵吗?) 程序员的人力成本 所以提高程序员的效率是关键
2012年12月26日,媒体报道称,微软正在研发一项GPS节能技术,将部分计算任务交由云端服务器处理,该技术可以达到99.96%节能效果。普通智能手机如果持续开启GPS功能,电池一般只能支撑6个小时。这其实给我们一个很好...
Mr Z add some backdoor in the debug version of software. He even add a small console for the application. It's more easy for him to do some kind of testing. For example, if we want to test the case of...
WOT,Word Of Tech峰会,是由51CTO重磅打造的高端技术盛会,关注趋势与变革,洞察创新与实践,推动发展与创新,搭建技术与思想自由交流的平台
2012年是非常特殊的一年,我们也许需要过许久才 能看清2012年在历史上的地位。经过5年的发展, iPhone和Android系统都已达到了一个成熟的高 度。惯常的节奏已被打破,新的竞争将是生态系统 的全面竞争。...
credit可以理解为"信用",但又不止于此,它还包含又周围的人对你能力,特点的认同和其他看法。以前看一本有关微软的书,里面就讲到一个程序员应该有意识的建立自己在团队的credit。让其他人信任你,认同你,能交给...
如果让你找出形如"who@who.net"之类的字符串,所有合格的C/C++程序员都能写出能"工作"的code. 但是,看看这些Code,你就会有非常痛苦的感觉.大多数人都写了一个小爬虫,辛苦的字符串堆里爬,看不到有什么理论支持,更不要...
先后供职于迅雷、阿里巴巴、宇通客车,目前在一家独角兽企业做测试开发架构师。 组织成立了郑州地区的软件测试圈子,参与组织多场线下沙龙。 微信公众号“软件测试布道师”维护者。 知识星球“测试开发技术圈”星主...
用C/C++变程是在无聊,为了完成任务,要做那么多不相干的事情,到头来还要关心内存泄漏,越界。有人说,“编程是对人心智的浪费”,此话不假。最近,我用python写了一些脚本,帮自己完成那些重复性的工作,看者滚动...
去年有一本书,英文名叫build for last,中文名应该是"基业长青" 这句话反映到软件上就是"复用" 虽然最初人们的理想"软件IC"看来是很难实现了,但是,"复用"的思想还是在我们的生活中时时处处体现着.
I HAVE A DREAM-从“天天向上”说起
CES是消费电子展的缩写,是全球 规模最大的消费类科技产品交易 会之一。2011年CES正式展会从1月6日 ~1月9日,共四天。几天参展下来,发 现真正在CES 2011首发的重头产品并 不多。大品牌厂商现在往往更倾向于在 ...
背景说明Martin 还是现在时常被人讨论的微服务架构的布道者,微服务本身,和 Web API 是一脉相承的。2.10 第2章自我总结——1h 23m梳理前面阅