搭建微服架构
-
-
什么是微服架构
简单的说就是将一个整体的应用按照一定的规则拆分成一个个独立的应用,这些独立的应用后面又组合成了一个整体的应用。
比如说一个博客系统,我可能包含了发表文章,用户登录,用户评论等功能,如果是一个单一的应用这些功能都会包含在这个应用里面。
而如果是微服架构 这些功能可能会包含在 文章服务,用户服务,评论服务里面。 -
整体实现了发文章,浏览文章。用户登录,用户评论的功能。
分别有 用户服务,文章服务,评论服务,文件服务组成。
- 微服架构遇需要考虑的问题
-
服务的编排
我的系统需要怎么要划分我的服务,一个是按照业务功能划分,每个服务只负责单一的业务。
服务划分的太细导致服务偏多,对于维护和开发都会增加不少难度,划分的太粗,又可能达不到当初使用微服的预想。所以采用微服架构前服务的划分要详细考虑。 -
分布式事物
由于系统划分成为了 一个个独立的系统,个个系统之间的采用 REST API方式,本地事物无法使用与夸多个系统的事物。所以分布式事物是微服需要解决的重中之重。一般微服的事物多采用可靠事件处理。 -
夸表查询
不同的服务,数据库是不共享的,都有独立的数据库,所以 查询的时候不能 采用单体架构 的 join 等语句与跨表查询,查询方面增加了不少难度。 -
持续集成与部署
微服的持续集成相对于单体应用要复杂的多,应为你有更多的服务需要部署,部署的时候你需要更多的硬件设备。所以微服常常会与docker一起使用,方便集成与服务扩容。 -
测试
微服的测试,由于服务的划分,不仅需要对单独的服务进行测试还需要对整体的功能进行测试。对测试也提高了一个难度。- 微服架构的优点
1.灵活,个个服务相互独立运行
2.可以选择不同的技术栈,不同的数据库等
3.服务之间的解耦,每个服务只关心自己的事情
4.便于维护与开发
5.配合docker 更方便的扩容。
- 微服架构的优点
- 服务的开发框架 spring cloud
spring cloud 集成了微服常用的组件,包含了服务的注册与发现,服务调用,负载均衡,熔断,监控,配置管理,服务网关等。配合spring 庞大的技术站,spring cloud也渐渐成为了 微服的代名词。
主要的一些组件:
- 服务发现——Netflix Eureka
- 客服端负载均衡——Netflix Ribbon
- 断路器——Netflix Hystrix
- 服务网关——Netflix Zuul
- 分布式配置——Spring Cloud Config
-
- 注册中心的作用
如果熟悉 Dubbo 或者其他 RPC 框架的朋友对注册中心这一名称并不陌生。
那么什么是注册中心,注册中心有什么用呢?
注册中心简单的来说其实就是一个存放公共数据的地方,我们的服务都会指定一个或者多个注册中心。
注册中心的作用就是将自己的服务网暴露出去,让注册到这个注册中心的服务知道有你这个服务的存在。-
常用的注册中心
zookeeper , Eureka ,Consul 等 甚至 Redis 等一些缓存服务也可以做注册中心,说白了就是一个存放服务信息的公共数据中心。 -
服务发现与注册的原理
为什么要注册中心,我们知道想要访问某个服务我们一般需要知道提供服务方的 ip和端口,而这些信息不可能写死在配置文件中,如果写死在里面,增加一个服务或者动态扩容你都要去写个原有的服务配置文件,这样显得很麻烦,服务中心最主要的功能也就是解决这些问题,让服务扩容变得更加灵活和方便。
-服务注册的原理 就是把 自己的 IP 地址,服务名称,端口号等信息发送到注册中心。
- 服务发现就是服务从注册中心拉取这些注册的信息,缓存到本地,给自己使用。
使注册中心挂掉,也不影响服务的使用,但新的服务无法发现。
服务注册与发现是根据服务名称进行区分,注册中心的出现屏蔽了IP地址和端口,只要通过服务名称就可以实现通信,使得微服更加灵活。
-
-