发表于: 2021-04-30 21:39:03

2 1195


今天完成的事情:
学习Spring Cloud Config
了解RabbitMQ

了解为什么要做微服务?微服务之前的架构是怎么样的?微服务解决了那些问题?




明天计划的事情:

继续学习spring cloud




遇到的问题:



搭建微服务springcloud Eureka的报错Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerExcepti


jdk版本设置问题,设置成1.8,运行成功



springcloud 向Eureka中注册服务异常java.net.ConnectException: Connection refused: connect

yml格式问题,多了一个空格



Cannot clone or checkout repository报错,SpringCloud Config无法获取github仓库配置

fq之后,时好时坏,一会能连上,一会报错git-upload-pack    折腾   还没解决




收获:
Spring Cloud Config

1.是什么?  微服务配置中心,对多个微服务进行集中式配置管理。


2.为什么要这样做?解决了什么问题?   简单而言,就是拆封的微服务太多了,分布式的配置不好管理,于是把它放在git上统一进行管理。当然也可以放在本地


1.Config Server读取仓库中的配置信息,存放在配置服务的内存当中


2.启动服务A,B,A,B会指定了向配置服务Config Server中读取配置信息


3.假如对配置信息发送post请求更新,这时服务A,B会向配置服务重写读取配置文件


===========
===========

配置文件:

启动:

报错:

==============
==============

了解RabbitMQ


RabbitMQ是什么?



消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。

可以将原本http同步通信的方式转换成异步通信,这就是使用RabbitMQ主要目的。



异步:A服务一个请求到B服务,B服务可以不同时运行,A不用等待B运行结束在才能运行。这样的好处是


1)不需要预留buffer,上游任务执行完,下游任务总会在第一时间被执行
2)依赖多个任务,被多个任务依赖都很好处理,只需要订阅相关消息即可

3)有任务执行时间变化,下游任务都不需要调整执行时间




MQ的不足:
1)系统更复杂,多了一个MQ组件
2)消息传递路径更长,延时会增加
3)消息可靠性和重复性互为矛盾,消息不丢不重难以同时保证

4)上游无法知道下游的执行结果,这一点是很致命的


注意:MQ只用来传递上游任务执行完成的消息,并不用于传递真正的输入输出数据。



什么时候不使用MQ?
上游实时关注执行结果,比如登录,订单支付不是的,订单支付一般采用回调网关+MQ的方案
什么时候使用MQ?
1)数据驱动的任务依赖
2)上游不关心多下游执行结果
3)异步返回执行时间长
===============
===============



微服务之前的架构是怎么样的?

主要问题:没有统一的服务层
问题一:代码重复度高,比如每个服务访问数据过程,也会给数据库增加很大压力。
二:复杂性扩散,并发量增加,db压力增加,+缓存(cache).每个web server都要+缓存,导入复杂行增加
三:db压力增加,db分库分表,复杂性增加,恶行循环。发现一个bug,所有web server都要修改,等于服务就要关闭一段时间。
四:库的复用与耦合

五:sql的质量得不到保证,各个业务层互相影响。且db疯狂耦合




微服务解决了那些问题?了解为什么要做微服务?



解决了之前问题:

1.复用性,防止代码拷贝。所有user数据的存取,都通过user-service来进行,代码只此一份,不存在拷贝。升级一处升级,bug修改一处修改。


2.专注性,屏蔽底层复杂度。在没有服务层之前,所有业务线都需要关注缓存、分库分表这些细节。


3.SQL质量得到保障。有了服务层之后,所有的SQL都是服务层提供的,业务线不能再为所欲为了。底层服务对于稳定性的要求更好的话,可以由更资深的工程师维护,而不是像原来SQL难以收口,难以控制。


4.数据库分开。






返回列表 返回列表
评论

    分享到