微服务架构的常见问题:

legs+之专栏 legs+之专栏 1565 人阅读 | 4 人回复 | 2023-04-15

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
微服务架构的常见问题



一旦采用微服务系统架构,就势必会遇到这样几个问题:

  • 这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])
  • 这么多小服务,他们之间如何通讯?(**restful **rpc)
  • 这么多小服务,客户端怎么访问他们?(网关)
  • 这么多小服务,一旦出现问题了,应该如何自处理?(容错)
  • 这么多小服务,一旦出现问题了,应该如何排错? (链路追踪)



回答|共 4 个

legs+ 发表于 2023-4-15 22:41:57| 字数 665 | 显示全部楼层

Feign与RestTemplate的区别
微服务之间的通信方式

常见的方式有两种:

RPC——代表-dubbo
HTTP——代表-SpringCloud
在SpringCloud中,默认是使用http来进行微服务的通信,最常用的实现形式有两种:

RestTemplate
Feign
Feign跟RestTemplate的区别

请求方式不一样

RestTemplate需要每个请求都拼接url+参数+类文件,灵活性高但是消息封装臃肿。

feign可以伪装成类似SpringMVC的controller一样,将rest的请求进行隐藏,不用再自己拼接url和参数,可以便捷优雅地调用HTTP API。

底层实现方式不一样

RestTemplate在拼接url的时候,可以直接指定ip地址+端口号,不需要经过服务注册中心就可以直接请求接口;也可以指定服务名,请求先到服务注册中心(如nacos)获取对应服务的ip地址+端口号,然后经过HTTP转发请求到对应的服务接口(注意:这时候的restTemplate需要添加@LoadBalanced注解,进行负载均衡)。

Feign的底层实现是动态代理,如果对某个接口进行了@FeignClient注解的声明,Feign就会针对这个接口创建一个动态代理的对象,在调用这个接口的时候,其实就是调用这个接口的代理对象,代理对象根据@FeignClient注解中name的值在服务注册中心找到对应的服务,然后再根据@RequestMapping等其他注解的映射路径构造出请求的地址,针对这个地址,再从本地实现HTTP的远程调用。

legs+ 发表于 2023-4-15 22:54:47| 字数 635 | 显示全部楼层

  1. server:
  2.   port: 10010 # 网关端口
  3. spring:
  4.   application:
  5.     name: gateway # 服务名称
  6.   cloud:
  7.     nacos:
  8.       server-addr: localhost:8848 # nacos地址
  9.     gateway:
  10.       routes: # 网关路由配置
  11.         - id: order-service
  12.           uri: lb://orderservice
  13.           predicates:
  14.             - Path=/user/**
  15.             - After=2021-01-20T17:42:47.789-07:00[America/Denver] #断言:只有在这个事件后发送的请求才可以
  16.         - id: user-service # 路由id,自定义,只要唯一即可
  17.           # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
  18.           uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
  19.           predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
  20.             - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
  21.           filters: # 过滤器(当前过滤器写在userservice路由下,因此仅仅对访问userservice的请求有效)
  22.             - AddRequestHeader=Conan, isMe! # 添加请求头
  23.       default-filters: # 默认过滤项(对所有路由都有效)
  24.         - AddRequestHeader=Truth, Itcast is freaking awesome!
复制代码


legs+ 发表于 2023-4-15 22:58:24| 字数 91 | 显示全部楼层

我手头起码有关于微服务的书不下20本,但是一直不得其门,直到B站研究微服务视频,才拈花一笑茅塞顿开。上面也是,我最近的心得和体会。这也是我最近来的比较少的缘故,望见谅!海涵!各位朋友

legs+ 发表于 2023-7-5 14:22:06| 字数 91 | 显示全部楼层

这是我看到的最言简意赅的关于微服务入门教程

https://blog.csdn.net/qq_45562491/article/details/115742773

所以,特拿出来分享一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则