前言:本课程是在慕课网上学习Spring Cloud微服务实战所做的笔记,供本人复习之用.
代码地址https://github.com/springcloud-demo
目录
第一章 微服务介绍
微服务的提出:
微服务是一种架构风格,比如restful也就是一种架构风格,既然是一种风格,也就是没有强制性,没有绝对标准的答案,细节上会有很多不同的理解.
1.1 经典架构
1.2 单体应用架构
1.所有的功能都是打包在一个var包里的.基本没有web依赖(不是maven里的dependency),而是商品服务依赖订单服务这样的依赖,我们现在打包成一个war包,商品与订单都在一个整体里,所以没依赖
2.部署在一个tomcat容器中,包括service,dao,ui所有逻辑.
3.所有服务公用一个db.
优点:容器测试,容易部署
缺点:开发效率低,代码维护难.部署不灵活(部署时间长,构建项目不灵活),稳定性不高.扩展性不够(希望商品服务应对的流量大一些,订单服务应对的流量少一些)
1.3 基于ajax的前后端分离
1.4 分布式架构
分布式定义:
分布式与集群的区别:厨房里有两个厨师,一个切菜,一个炒菜,这个叫分布式.两个都炒菜,这个叫集群.
1.5 微服务架构
前端服务与后端服务都是可以集群化的,前端后端都要向服务注册发现进行注册.
服务注册发现:服务提供方必须注册上来,服务的调用方才能从组件上正确的发现目标服务.
服务网关:微服务除了内部相互通信,也需要让外界访问得到.比如手机与浏览器之类的,所以需要通过一种方式将自己的路由暴露出去,这就涉及到服务的前端路由,对应的组件是服务网关,它是连接内外的大门.网关会对外屏蔽后台的一些细节,路由的功能,限流和容错的功能,和可以堆服务网关进行认证,反爬虫等等,看一个公司的项目好不好,看服务网关就行了.
后端通用服务:在启动的时候会将服务注册到服务注册表里面.
前端服务:前端服务可以查询注册表,调用后端服务.前端的服务对后端的服务做聚合和必要的裁剪后,暴露给外部不同的设备.
聚合就是对多个api调用逻辑进行聚合,比如客户端来请求两个api,一个api是获取用户的基本信息,一个api是获取用户的地址,前端的服务可以将两个接口合二为一,这样客户端只用调用一个接口就好了.
裁剪就是都是返回商品信息的接口,pc端返回的更详细一些,手机端返回的更简单一些.还有就是比如我们pc端要返回html.手机端要返回报文,这个时候也是由前端服务做的裁剪的操作.
可以看到上面的后端通用服务于前端服务都有些"胖",如和治理呢?
两大解决方案:
阿里系:
Dubbo做服务化治理
ZooKeeper做服务注册中心
SpringCloud:
Spring Cloud Netflix Eureka
1.6 SpringCloud是什么