详解Spring Cloud(微服务入门知识)一

一、什么是微服务?

  微服务的概念是由 James Lewis & Martin Fowler 于2014年3月25日所写的论文《Microservices》中提出的。微服务是一种架构模式或者说是一种架构风格,它代表的是一种思想,可以说是分布式应用的最佳实践之一。

二、微服务特点

1、一系列微小的服务共同组成(传统的单体应用)
2、运行在自己的进程里(每个业务之间互不干扰,可独立运行)
3、每个服务为独立的开发
4、独立部署
5、分布式的管理

三、架构的演变进程

详解Spring Cloud(微服务入门知识)一_第1张图片
  当然并不是说单体架构就不能是分布式了,在服务演进到Spring Cloud之前,也会先构建一个单体应用,基于Ajax的前后端完全分离的分布式(水平扩展&服务拆分)的应用。
详解Spring Cloud(微服务入门知识)一_第2张图片

四、分布式

1、定义:旨在支持应用程序和服务的开发,可以利用物理架构,由多个自治的处理元素,不共享主内存,单通过网络发送消息合作。–Leslie Lamport
2、分布式服务的三个特点:
(1)多个自治的处理元素(可以较为简单的理解为多个节点)分布式系统是多节点的,集群也是多节点的,那分布式和集群有什么区别呢?举个例子,例如在工地上有两个工人,一个负责搬砖,一个负责打地基,做的事情之间互不干扰,那么就是分布式。如果两个都是搬砖,那就是集群。
(2)不共享主内存,各个节点通过消息来通信,比如基于HTTP的Restful接口,或者RPC,这些在微服务中同样适用。

五、单体架构特点

  了解完分布式后我们再来看看单体架构,两者对比一下是可以看出两者的差别的。
1、所有的应用都是打包在一个war包中的(springboot可以选择jar或者war)虽然各个模块比如商品或者订单都有各自的逻辑,但是最后打包的时候,都是打包到一个项目里面的。基本上没有外部依赖。
2、项目都部署在一个web容器内,但不一定是Tomcat
3、共用一个DB(数据库)

六、简单微服务图解

重叠的代表集群,集群是为了防止服务挂掉导致功能受到影响。
详解Spring Cloud(微服务入门知识)一_第3张图片

  微服务是由一系列单一微小的服务构成的,那么这些服务必然要通过某种机制进行通信,那么肯定要有服务注册与发现这么一种组件,也就是说会有一个统一中心,每个服务都需要在这个中心进行注册,提交自己的服务地址,然后,服务调用,才能从中心正确的发现目标服务。
  接着,除了微服务内部也会互相调用或者说通信之外,还必然会像外界提供一些接口,如此,每个服务要需要有一种方式能够将自己的API暴露出去,这就涉及到服务的前端路由组件即服务网关(Service Gateway) ,网关是链接内外的大门,主要有以下一些关键的作用,网关会对外屏蔽后台服务的一些细节,比如后台程序要升级,或者有一些变化,但是对外对用户是无感知的,还有路由的功能,会将外部的请求,反向路由到内部的某些微服务去,还可以做一些限流和容错的功能,因为所有的请求都会经过网关,也可以在这控制流量,监控,以及日志,要做好微服务的安全性,服务网关就非常重要了,比如用户的认证,授权,反爬虫等等。
  除此之外,还有后端通用服务(也成中间层服务Middle Tier Service)对应前端服务(也称边缘服务Edge Service),后端服务在启动的时候,会将服务地址信息注册到服务注册表中,前端服务通过查找注册表,就可以发现或者调用后端服务,前端主要是对后端服务做必要的聚合和裁剪后暴露给外部不同的设备,聚合指对多个API调用逻辑进行聚合从而减少客户端的请求数,合二为一,假设客户端要请求两个API,一个接口要获取用户的基本信息,比如身高年龄体重等信息,另一个接口要获取用户的地址信息,这两个接口都应该是由后端服务来提供的,如果客户端直接调用,需要调用两次,此时,前端服务可以做聚合,将两个接口合二为一提供给外部此时,客户端只需要调用一个接口即可,裁剪则正好相反,举个例子,比如手机端和WEB端访问同一个接口 查看用户详情,但是返回给手机端和WEB端的信息是不一样的,相对于WEB,手机端需要的详情内容会少很多。又或者,在WEB中返回的是HTML,而在手机中返回的是JSON,这也是有前端服务进行裁剪操作。
  仔细观察下图,可以发现WEB端和手机端的不同。
详解Spring Cloud(微服务入门知识)一_第4张图片
  目前国内流行的微服务架构主要有两种,一种是spring的spring cloud,另一种是阿里的Dubbo。阿里的是由Dubbo完成服务治理Zookeeper做服务注册中心,业务同样是SpringMVC以及Springboot。而SpringCloud是由SpringCloud Netflix Eureka 做服务注册中心以及 Springboot 等等。

七、Spring Cloud是什么?

  Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 ----百度百科

你可能感兴趣的:(spring,cloud,微服务架构)