赞
踩
2023.2.14
基本流程:
前端服务器按照接口发起请求(比如vue)-nginx(把存放的静态页面资源返回给浏览器)--网关(zuul)-eureka(去上面根据请求路径找对应的微服务)-具体处理业务的微服务-再把结果一次返回,指导返回给前端页面展示
前端接口请求地址第一层一般是服务在网关上的映射名(在application.yml中配置),通过映射关系,网关找到该服务在Eureka上注册的服务名。再由Eureka找到真实的微服务,根据第二层的接口路径找到对应的controller进行相应的业务处理。
其他相关组件:Ribbon负载均衡,在微服务pom文件中配置引入使用,默认为轮询模式。
feign:实现远程调用。同样需要在pom中配置引入。实现调用其他微服务中的方法。
5、如果要调用同项目下其他微服务中的类(工具类),也同样可以在pom中引入,这种相当于是本地调用了。
2.26
1、nginx一般作为网站的第一入口,nginx先把首页展现给用户,首页原本是静态页面,但其中动态部分包含vue请求。nginx配置了前端服务端口,首页路径,以及按目录存放各个微服务的静态页面。只需要把首页展示给用户,后续内容呈现和跳转就交给前端服务器解决。
3.30
用户登录认证一般实现思路:
用户登录成功时,将生成一个key,存入redis。并在本地cookies中也保存该key
后续用户请求系统所有的接口时,都会从本地cookies中取到key,并在请求内容中带上这个key
网关负责拦截所有请求,校验请求是否带有key,后台拿这个key和redis进行比较,验证是否存在该用户信息
如果校验通过则说明用户已经登录,可以正常执行后续操作。否则就转到未登录的操作。
4.7
springboot默认实现了线程隔离,当多个用户访问一个服务时,每个用户各自使用一个线程。如果使用到类的全局变量(包括spring管理的bean),则会各自使用一份初始拷贝,互不影响。
redis缓存:数据库查询使用缓存时,需要注意其他对数据库改动的操作是否会影响缓存,如果有影响,需要对缓存进行更新或者清楚。
7.13
Feign的使用:SpringCloud Feign使用_liucy007的博客-CSDN博客
实现微服务之间的调用:
如果A要调用服务B的接口,A工程中添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
则A需要把B的服务接口信息在自己内部进行声明。也就是将B的接口信息在自己工程中进行映射。
name:调⽤的服务名称,和服务提供者yml⽂件中spring.application.name保持⼀致
path: 定义当前FeignClient的统一前缀
@FeignClient(name = "edu-ad-boot",path = "/ad")
public interface AdRemoteService {
调用请求路径
@GetMapping("/space/getAllSpace")
List<PromotionSpaceDTO> getAllSpace();
@GetMapping("/space/getSpaceById/{spaceId}")
PromotionSpaceDTO getSpaceById(@PathVariable(value = "spaceId") int id);
}
A⼯程启动类使⽤注解@EnableFeignClients添加Feign⽀持
@SpringBootApplication
@EnableDiscoveryClient //开启服务发现,注册到注册中心
@EnableFeignClients("com.lagou.edu") //实现远程调用,指定远程包
public class FrontApplication {
public static void main(String[] args){
SpringApplication.run(FrontApplication.class,args);
}
}
8.11
1、gateway配置说明:
server: port: 8080 spring: application: name: api-gateway-server cloud: gateway: routes: - id: product-service # 路由 id,唯一标识 uri: http://localhost:9002 predicates: - Path=/product/** # 断言,路由匹配条件,匹配 /product 开头的所有 api - id: order-service uri: lb://order-service # 微服务名称,lb:// 表示根据微服务名称从注册中心拉去服务请求路径 predicates: - Path=/order2/** # 断言,路由匹配条件,匹配 /order2 开头的所有 api filters: #如果不加这个,那么所调服务的真实controller路径前缀必须和path - RewritePath=/order2(?<segment>/?.*), $\{segment} #表示order2后面部分是对应服务真实controller路径 eureka: client: service-url: defaultZone: http://localhost:9000/eureka/ instance: prefer-ip-address: true instance-id: ${spring.cloud.client.ip-address}:${server.port}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。