看B站尚硅谷周阳SpringCloud视频学习
通常而言,微服务架构是一种架构模式(或者说一种架构风格),它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调,互相配置,为用户提供最终价值。
服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中。
针对不同的服务,匹配适合的语言,工具进行管理,避免统一集中式的服务管理机制。
微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。
左:单体架构下,应用紧耦合,所有的变更必须一起上线,持续部署就是天方夜谭。 中:传统SOA架构允许单独的变更,但是每一个部分必须很谨慎地修改以免破坏整体架构设计。 右:在微服务架构下,开发可以独立地创建、维护和改进服务。服务之间通过API连接。
SpringCloud基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。
SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等等,他们都可以用SpringBoot的开发风格做到一键启动和部署。
最主要的区别就是通信方式了! Dubbo:使用RPC远程调用 SpringCloud:使用Rest API
微服务定义的服务间通信机制就是Http Rest
RPC最主要的缺陷就是服务提供方和调用方式之间依赖太强,我们需要为每一个微服务进行接口的定义,并通过持续继承发布,需要严格的版本控制才不会出现服务提供和调用之间因为版本不同而产生的冲突
REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合, 只是通过一个约定进行规范,但也有可能出现文档和接口不一致而导致的服务集成问题,但可以通过swagger工具整合,是代码和文档一体化解决,所以REST在分布式环境下比RPC更加灵活
心碎表示不维护了 红心表示本次学习使用
dependencyManagement里只是声明依赖,并不实现引入,而dependencies相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
略
同PaymentDao
建议慎用,轻薄本就别用了。。
Ctrl+Shift+Alt+/ 把complier.automake.allow.when.app.running 打勾 actionSystem.assertFocusAccessFromEdt 打勾
前四个基本同上
(配置RestTemplate类)
消费者通过restTemplate调用服务提供者的方法。 他们仅仅通过CommonResult接口进行交互!
感觉就是用了消费者的网址结果重定向到提供者的网址一样
插入成功但是值是null? 因为提供者的controller忘记加@RequestBody注解了(。。) 加完就可以了~~~
传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。 由于过于繁琐,所以spring提供了一种简单便捷的模板类来进行操作,就是RestTemplate。
使用restTemplate访问restful接口非常的简单粗暴无脑。
url:请求地址requestMap:请求参数ResponseBean.class:HTTP响应转换被转换成的对象类型。实体类在消费者和提供者都会用到,所以是个重复的代码,我们应该把重复的代码提取出来!
引入了hutool-all工具