1.认识微服务
1.1单体架构:
将业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:架构简单,部署成本低
缺点:耦合度高(维护困难、升级困难)
1.2 分布式架构
根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。
优点:降低服务耦合,有利于服务升级和拓展
缺点:服务调用关系错综复杂
一个大型项目可能包含成百上千的服务,形成一个服务集群。
一个业务由多个服务完成,当业务越多,服务之间的调用关系就越复杂,这样需要一个组件“注册中心”,负责记录每一个服务的功能、IP、端口等配置信息。通过它可以调取相应服务。
每一个服务都有自己的配置文件,需要一个组件“配置中心”管理所有的配置。可对服务配置进行热更新。
现在就是可访问状态,用户通过身份验证,提交请求,由服务网关路由到相应服务。
在高并发情况下,需要缓存来及时响应,而且是分布式缓存组件;还可能有搜索功能,所以需要分布式搜索组件;还有异步通信的消息队列组件。
为应对系统出现异常的问题,引入分布式日志服务,可以统一对整个集群中的每个服务的运行日志进行存储、统计、分析,出现问题可以准确定位。还有系统监控链路追踪组件,实时监控整个集群中每个服务节点的运行状态、cpu负载、内存占用等,一旦出现问题,可以直接定位。
对系统进行自动化部署
2.微服务
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
- 面向服务:微服务对外暴露业务接口
- 自治:团队独立、技术独立、数据独立、部署独立
- 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
3.微服务技术内容
来自黑马程序员ppt
4.微服务框架
在国内最知名的就是SpringCloud和阿里巴巴的Dubbo。
4.1.springcloud简介
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验
4.2.springcloud与springboot
SpringCloud 底层是依赖于 SpringBoot 的,并且有版本的兼容关系