1.微服务技术栈
总览图:
分模块学习:
2.服务架构的演变
1.单体架构
将业务的所有功能集中在一个项目中开发,打成一个包部署。
①优点:
架构简单
部署成本低
②缺点:
耦合度高
2.分布式架构:
根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
优点:
降低服务耦合
有利于服务升级拓展
3.微服务
微服务是
一种经过良好架构设计
的分布式架构方案,微服务架构特征:
①单一职责
:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
②面向服务
:微服务对外暴露业务接口
③自治
:团队独立、技术独立、数据独立、部署独立
④隔离性强
:服务调用做好隔离、容错、降级,避免出现级联问题
3.微服务技术对比
4.企业需求
5.服务拆分
1.注意事项
1.不同微服务,不要重复开发相同业务
2.微服务数据独立,不要访问其它微服务的数据库
3.微服务可以将自己的业务暴露为接口,供其它微服务调用
2.远程调用
http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。
基于
RestTemplate
发起的HTTP请求实现远程调用的过程如下:
创建RestTemplate对象
:首先,需要创建一个RestTemplate对象来发起HTTP请求。
可以通过直接实例化RestTemplate类或者使用依赖注入的方式创建RestTemplate对象。
- 构造请求URL:根据需要调用的远程API的URL,构造一个完整的请求URL。
可以使用字符串拼接的方式构造URL,也可以使用UriComponentsBuilder类来构造URL。- 设置请求头:根据需要设置一些请求头参数,例如Content-Type、Authorization等。
可以使用RestTemplate的header()方法来设置请求头。- 设置请求体:如果需要传递请求体数据,可以使用RestTemplate的
postForObject
()、postForEntity
()等方法来设置请求体。- 发送请求并获取响应:根据具体的需求,选择合适的RestTemplate方法来发送请求并获取响应。例如可以使用
getForObject
()、getForEntity
()、postForObject
()、postForEntity
()等方法。
- 处理响应数据:根据接口返回的数据类型,使用相应的方法来处理返回的响应数据。
例如可以使用ResponseEntity类来获取响应的状态码、头部信息以及响应体数据。
需要注意的是,在使用RestTemplate发起HTTP请求时,需要确保引入了相关的依赖,例如Spring Web和Jackson等。
此外,还需考虑异常处理、超时设置、重试机制等。