微服务的理解
微服务:
维基百科中是这么定义的:微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模组化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 (Language-Independent/Language agnostic) 的 API 集相互通讯。
SOA
维基百科中是这么定义的:面向服务的体系结构(英语:service-oriented architecture)并不特指一种技术,而是一种分布式运算的软件设计方法。软件的部分组件(调用者),可以通过网络上的通用协议调用另一个应用软件组件运行、运作,让调用者获得服务。
Spring boot
Spring Boot是由Pivotal团队提供的全新框架设计方式,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它使用“习惯优于配置”的理念让你的项目快速运行起来。因此Spring Boot并不能说是一个框架,而是一个集合或者工具。
spring cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
docker
维基百科中是这么定义的:Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制[1]。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担。
结论
1.微服务并不是一个全新的框架,是一种软件架构设计风格。
2.微服务也属于SOA,只是与传统的SOA存在着一些差别。微服务可以看作是SOA概念的升华,微服务中对于业务拆分更加细粒度,微服务更倾向于去中心化,去ESB总线。
3.Spring Boot和SpringCloud组合,是开发微服务的一个黄金组合套装。单并不是说这两个东西才是微服务,只是我们更习惯用这两个套件来进行开发,我们也一样可以使用其他工具来开发微服务。
4.Docker是一种容器,基于LXC实现的。Docker的抽象性和隔离性非常适合部署微服务。但也并不是说只有Docker才是微服务或者只有Docker才能部署微服务。我们使用VM,甚至物理机一样可以部署微服务,只是从量级以及编排部署等方面考虑,使用Docker容器更容器部署和管理微服务。
服务治理
服务化
分布式架构即服务化。服务化主要有如下特点:
1.应用按业务拆分成服务
2.各个服务均可独立部署
3.服务可被多个应用共享
4.服务之间可以通信
服务化实现方式
如果要实现服务化的话,最常用的方式就是利用RPC框架。因为服务组件一般分布在不同的服务器上,所以要实现服务化需要解决的第一个问题就是RPC远程服务调用。类似于RPC方案有很多,比如:
Java RMI
WebService
Hessian
Http
Thrift
… …