springCloud Alibaba的视频学习

视频1:什么是微服务及微服务的好处:将单个模块拆分成单个子系统,原来需要将一个项目打包成一个war,现在需要打包成许许多多的jar包,各个系统之间进行交互。

                           几千人的团队,提交代码的冲突减少了。服务拆分伴随数据库拆分,便于维护数据库,如果双十一,只需要给特定的服务系统对应的数据库加机器就行,

                           而以前则需要给整个系统都加机器。

                      缺点:运维会比较麻烦。原来的spring单体事务现在变成了分布式事务。定位哪台服务器出现了问题会比较麻烦。

视频2:一个交易系统可能会有几百上千台机器,比如说库存系统,那么我要怎样知道我要调用哪台机器呢?以前的单体架构下我们可以使用nginx,然后配置轮询,那样的话运维工作就很麻
    烦。现在我们就可以使用注册中心,将服务注册到注册中心,那么我们调用的时候就可以随机访问注册中心中的一个服务。而且注册也超级简单,只需要加一个注解就行。


视频3:以前用eureka,现在用nacos,nacos的服务器怎么搭建自己去搜很简单。只需要引入依赖,然后。properties中配置就可以。然后访问(问题:怎么访问?)就可以。

       
       如果一个服务名你注册了两台服务器,那么你另一个服务的远程调用这两个服务时并不能通过服务名+requestMapping去访问到,这个时候就需要用loadBance负载均衡了,你只需要在

        restTemolate注入bean的地方加入@loadBanced注解即可默认用轮询策略。

       那么ribbion的底层原理是什么样呢?大概是这样:底层有一个拦截器,将你的域名解析找到对应的所有的机器列表。而且将这些机器列表在它本地缓存一份,并且随机找一台机器去

执行服务。Ribbion的底层源码超级简单。

       还有一个问题,当你加机器减少机器时,本地缓存的机器列表跟注册中心的不一致了怎么办?那样就会导致本地机器轮询到了,然而这台机器已经没有了,导致报错。其实Ribbion的
底层是有一个定时任务的,拿着你的域名会定时扫注册中心的。保证本地拿到最新的注册中心列表来覆盖本地缓存的最新列表(问题:这不可能保证吧?)其实你加入了nacos这个包以后,
nacos就会对注册中心定时发心跳,如果过了一定时间这个机器不发心跳了,那么注册中心就会知道这台服务器已经挂掉了,就会在注册中心中将这台服务器给删除掉。

视频4:加入了openFeign后,openFeign底层会给这个接口生成一个代理方法,在代理方法中会拼装访问路径,它会发起一个http调用,就会访问到你的服务。那么就会出现一个问题啊,那个
域名是怎样解析出来,然后访问具体的某个机器的呢?所以说feign接口底层其实也依赖了ribbion组件,根据ribbion的那套流程去走的,找到具体的某台机器。

      引出另外一个问题,比如有订单系统,库存系统,积分系统,会员系统。假如积分系统挂掉了,那么怎么办?不可能让整个服务回滚吧。小公司可以这样做,大公司一定要达到高可用。

这里就引入了sentinel这个组件,起到了服务降级的作用。刚刚在试验的过程中,积分系统挂掉了,他的服务没有回滚,还一直在往下走,这是怎么做到的呢?

视频5:上一个引入了sentinel组件,他的底层其实就是做了一个try catch ,如果出错了catch到的话,就在catch里调用fallback的操作,从而达到服务降级的处理。

      sentinel也可以做限流的作用。要达到这个目的,得下载一个sentinel的安装包(在linux上),直接java -jar启动这个jar包就行。启动后访问会有一个可视化界面,在界面上可以配
置每秒最多承受多少访问等参数。这里还可以配置请求熔断的比例和时长。比如:5秒之内有80%异常,而且最小请求数达到某个值(自己设定的),那么下次就不调用这个服务了,转而会调
用那个服务降级的方法。不可能一直熔断啊,它有熔断时长设置(自己设置),如果过了这个时长,它会重新试着发起连接,如果你服务重新启动起来了,就会连接上,正常服务。

视频6:sentinel限流熔断底层基于滑动时间窗算法实现。   seata是解决分布式事务的。使用步骤:1.搭建一个协调平台,2.加入seata的组件包,3.在使用事务的地方加上
@GrobalTeansantion注解就可以。底层是怎么做的呢?如果两个服务都成功就没有问题。如果一个服务失败了,数据库会生成一个undo日志,然后在本地根据这个日志进行一个反向操作就可
以了,这不就实现了回滚嘛!    seata其实不常用,只有在转账这些操作的时候才会用。因为seata组件在实现时加上了许多的锁,加锁就会影响性能,非常慢,在高并发的情况下势必会影
响性能。那么不用他的话,那分布式事务怎样实现呢?这个问题留给下一节。

视频7:

视频8:

视频9:

视频10:源码:服务是怎样注册的?看源码,抓主线,了解springboot的自动装配原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值