一、什么是微服架构
简单的说就是将一个整体的应用按照一定的规则拆分成一个个独立的应用,这些独立的应用后面又组合成了一个整体的应用。 比如说一个博客系统,我可能包含了发表文章,用户登录,用户评论等功能,如果是一个单一的应用这些功能都会包含在这个应用里面。 而如果是微服架构 这些功能可能会包含在 文章服务,用户服务,评论服务里面。
整体实现了发文章,浏览文章。用户登录,用户评论的功能。
分别有 用户服务,文章服务,评论服务,文件服务组成。
二、微服架构遇需要考虑的问题
-
服务的编排 我的系统需要怎么要划分我的服务,一个是按照业务功能划分,每个服务只负责单一的业务。 服务划分的太细导致服务偏多,对于维护和开发都会增加不少难度,划分的太粗,又可能达不到当初使用微服的预想。所以采用微服架构前服务的划分要详细考虑。
-
分布式事物 由于系统划分成为了 一个个独立的系统,个个系统之间的采用 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
针对于上面所涉及到的知识点我总结出了有1到5年开发经验的程序员在面试中涉及到的绝大部分架构面试题及答案做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习,也可以关注我一下以后会有更多干货分享。