微服务简介

微服务简介

微服务是一种架构风格,从应用程序的角度出发理解,即将应用程序拆分成一个个可单独部署的服务,微服务的特点是:

⑴细粒度组件;从整个项目的角度出发,微服务将每个项目分隔为多个子项目,在子项目的内部又分割为多个功能模块,每个功能模块又可细分为多个服务接口.

⑵单一职责原则;对于微服务中的服务,强调的是每个服务接口尽量提供一个专一的服务,分隔为最小的服务单位.

⑶跨应用可复用;对于一个服务接口,跨服务,跨模块之间可能存在调用关系,一个服务可被多个服务消费者调用.

⑷独立可部署;每个服务可在容器中进行单独部署,且不影响其他服务的部署,但是在业务逻辑上,每个服务可能存在互相依赖的关系,某个服务的宕机或网络环境导致的某个服务的不可用,会导致其他服务的无法进行.

⑸轻量级通信协议;微服务采用HTTP协议和JSON格式轻量级的通信协议.

服务

上文中提到的服务,服务的宕机,可能会导致对服务的理解有些混淆,微服务中的服务可以从多个角度来理解:从软件的角度来理解,就是一组使用Restful方式提供的服务接口API,通过http进行访问;架构的角度来理解,就是一个部署在特定机器上的应用,服务的宕机指的是,服务做部署的主机由于某些情况导致服务的不可用;从业务的角度理解,服务就是一个功能单元,这个功能单元尽可能的不可分割.

Spring Cloud和微服务

上面提到,微服务是一种架构风格,它是一个从理论方面来对软件架构的解析,但是具体软件开发时如何部署,使用哪种开发工具,使用哪个具体的协议,语言等,这个由多种实现方式,但Spring Cloud为微服务的落地提供了方便的开发框架,Spring Cloud提供了一整套分布式工具用来实现微服务的开发和部署,eg:服务发现和注册,请求路由,负载均衡,服务与服务之间的调用,服务之间的消息传递,网关等一系列高效率的开发工具.

Spring Cloud 和Spring Boot

Spring Boot是一个快速整合常用框架以及第三方框架的工具,基于注解,少量的XML配置,内置Tomcat服务器,同时可以将应用以jar的方式直接运行,Spring Cloud 是基于Spring Boot,Spring Cloud中有部分Spring Boot的特性,基于注解,内置服务器,快速整合框架等特性,使得Spring Cloud快速,高效的开发和部署.

为什么总是看到有人说:使用Spring Boot构建一个微服务?因为Spring Cloud基于Spring Boot,在Spring Boot的基础上,添加特定的依赖,可以加入Spring Cloud中的微服务组件,所以,Spring Boot 是构建微服务的基础,Spring Cloud只是一整套微服务工具,当然也可以说使用Spring Cloud构建微服务.

微服务和云

云,即云计算,云计算有三种基本模式:即IaaS(基础设施即服务),PaaS(平台即服务),Saas(软件即服务);IaaS即云供应商提供基础设施,而具体技术的选择和构建由消费者自己定义;SaaS即云供应商为服务的提供者,消费者为服务的消费者,无法对技术进行选择,也没有任何责任来维护应用程序的基础设施.PaaS即云供应商提供平台,以及平台的维护,用户可在平台中进行开发.新的云平台类型,有FaaS函数即服务,CaaS容器即服务.

微服务需要的是高可用的部署,但对于本地部署,存在很多应用隐患,所以基于云的微服务便是一个不错的选择,它以弹性的概念为中心,对于服务的部署十分方便,提高应用程序的水平可伸缩性,即可以添加更多的服务实例,同时基于云的微服务,具有更高的弹性,对于某个服务的不可用,可以快速重新申请一个服务器,而不是重新部署.

云为微服务提供了硬件和软件上的便利,使得微服务变的高可用.

Spring Cloud 与中间件

传统的中间件,即操作系统之上,应用软件之下的“中间层”软件,随着架构的演变,中间件的边界也有所延伸,即“中间件向下屏蔽异构的硬件,软件网络等计算资源,向上提供应用开发,运行,维护等生命周期的统一计算环境与管理”(来自重新定义SpringCloud 实战),简单的理解,中间件即一种提供中间服务。Spring Cloud也可是一个中间件,Spring Cloud可以作为服务治理中间件,支持使用Eureka,Zookeeper,Consul作为注册中心,Spring Cloud Config是Spring Cloud中的配置中心中间件,Spring Cloud也提供了网关中间件,Zuul,Gateway,Spring Cloud Sleuth是全链路监控中间件。                  

再谈Spring Cloud

从架构的演变来看,架构的变化为:单体架构,分布式架构,SOA架构,微服务架构,“微服务是一种架构风格,对于一个大型复杂的业务系统,它的业务功能可以拆分为多个相互独立的微服务,各个微服务之间是松耦合的,通过各种远程协议进行同步/异步通信,各微服务均可以被独立部署,扩/缩容以及升/降级”(来自重新定义SpringCloud 实战)。SpringCloud 是一个微服务解决方案,是一个实现微服务落地的一整套工具.Spring Cloud也是一个中间件,即向上对服务消费者,向下对服务提供者,在这中间,提供了一系列处理,使得微服务高效,高可用.

 

如有异议,敬请指出,谢谢观看,与君共勉.

 

 

 

 

 

 

 

 

 

 

全部评论

相关推荐

头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务