二、微服务
三、微服务开发框架
众所周知,开发框架是提升开发效率的强大利器。
再强大的编程语言,为了保持设计上的全面性和兼容性,都不会为了提升某些场景的开发效率而做出及时改动。为了弥补语言上的缺失,开发框架将广大开发者的最佳实践进行封装,相当于对语言进行增强,形成一套独特的开发标准,有助于提升特定场景的开发效率。
在开发效率上的设计,编程语言需要考虑全面的使用场景(包括web、数据分析等),而一个开发框架往往只需考虑一种特定场景(比如web)
开发框架一般由多个公共库组成。为了方便开发者使用,成熟的开发框架还需要提供代码管理(比如maven)、脚手架、使用手册,甚至内置到IDE(比如Spring内置到Idea)。各大语言都有相应的主流开发框架,包括Java的Spring
、Python的Django
、Go的Beego
等。
当前,在众多开发框架中,要属微服务框架最火。
微服务是一种软件设计思想,源自SOA(Service-Oriented Architecture,面向服务的体系结构)
。
在服务端技术尚未成熟的年代,开发者倾向于将所有代码都编写成一个模块运行,这种模式称为单体应用
。当系统处于小规模时,单体应用显示出简单易部署的优势。随着互联网兴起,系统规模不断变大,单体应用出现了难以协作开发、启动慢、不能隔离部署等问题。
1996年,Gartner提出SOA
,将系统拆分成多个服务模块,服务间通过约定好的接口格式和协议进行连接互访。相较于单体应用,作者认为SOA最关键的是简化了开发协作,使大规模的团队开发成为现实,同时还解决了启动慢、分布式部署等问题。
虽然Microservices(微服务)
这个概念很早就有人提出,但一般认为,是由Martin Fowler在2014年发表的《Microservices》正式奠定。虽然《Microservices》中提到微服务和SOA不是一个风格的东西,但作者认为微服务仍然在SOA的范围内,因为相对于SOA,微服务是进一步提供了明确可落地的思路,比如围绕业务的组织、容错设计、推荐http和多语言等,但核心思想还是面向服务的架构。
值得一提的是,SOA的一个变种ESB(Enterprise Service Bus,企业服务总线)
,使用一个中心化的总线模块连接所有服务,这个总线模块提供了服务发现注册、适配协议、数据格式、参数转换、负载等功能。可以认为,微服务和ESB都是SOA思想的进一步完善,相较而言,前者偏去中心化,后者偏中心化。
微服务是软件设计思想,将这一思想变成现实的是微服务开发框架。主流微服务开发框架包括Spring Cloud
、Google gRPC
、Facebook Thrift
、阿里Dubbo/HSF
等。
本文通过Spring Cloud一窥微服务开发框架的究竟。要了解Spring Cloud,得从Spring Framework开始介绍,因为Spring Framework是Spring家族一系列技术的基石。