一.springcloudAlibaba:致力于解决微服务开发的一站式方案。只需要添加一些注解和少量配置,就可以将springcloud应用接入到阿里服务器解决方案中。
二、nacos:是一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。简单的说就是可以在上面完成注册中心和配置中心。
2.1使用:(1)下载nacos,并且启动。(2)导入nacos依赖
(3).在appliaction.properties中进行配置:spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848(链接地址),然后给起个名称,这个名称是在网页上显示的名称:application.name="xxx".
(4).开启服务注册发现功能:在启动类上@EnableDiscoveryClient.
注意:bootstrap.properties此文件nacos最先读取,这个文件是springboot规定的
2.2Nacos配置中心:配置中心的意思就是不要在application.yml中进行配置类,直接就可以在nacos中配置。
使用:(1)导入依赖创建bootstrap.properties
# 改名字,对应nacos里的配置文件名
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=192.168.11.1:8848
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")//从application.properties中获取//不要写user.name,他是环境里的变量
private String name;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name",name).put("age",age);
}
}
@Value(“${}”),获取配置文件中的变量.但是值一改,必须重新启动才能在获取到正确的值,这时候只需要@RefreshScope就可以不用启动也可以获取到正确的值
2.3Nacos进阶:在nacos网页中还可以设置命名空间用作配置隔离(一般一个微服务一个命名空间),默认是public。Namespace的常用场景之一就是不同环境的配置的区分隔离。比如开发环境,测试环境等。
在bootstrap.properties中配置:
spring.cloud.nacos.config.namespace=b176a68a-6800-4648-833b-be10be8bab00 可以选择对应的命名空间 ,即写上对应环境的命名空间ID。
配置分组:spring.cloud.nacos.config.group=dev # 更改配置分组
三、远程调用:a服务调用b服务的某个功能。使用Fegin:是一个声明式的http客户端,给远程服务发的是http请求。
3.1使用:导入依赖。(2)比如a服务要调用b服务,在a服务的启动类上开启@@EnableFeignClients(basePackages="调用类的位置")(3).新建包,此包代表a服务要调用b服务的功能类,创建一个接口,并在类上写@FeignClient("b服务名称")(4).复制要调用b服务的功能类代码。
四、网关:发送请求需要知道商品服务的地址,如果商品服务有100台服务器,1号掉线后,得让别的机器知道。请求也要加上询问权限,看用户有没有权限访问这个请求,也需要用到网关。所以我们使用springcloud的getway组件来做网关功能。网关就是请求浏览的入口,常用功能有路由转发,权限校验,限流控制等。
4.1三大核心概念:route:发一个请求给网关,网关要将请求路由到指定的服务。路由有id,目的地url.Predicate断言的集合,匹配了断言就能到达指定位置。Filter:过滤器请求和响应都可以被修改,客户端发送请求给服务端,中间有网关,先交给映射器,如果能处理就讲给handler,然后交给一系列filter,然后给指定的服务,再返回给客户端。
使用:创建一个微服务getway,加入getway依赖,(2)开启@EnableDiscoveryClient
(3).在application.yml中配置:spring:
cloud:
gateway:
routes:
- id: baidu_route
uri: http://www.baidu.com
predicates:
- Query=url,baidu
- id: test_route
uri: http://www.qq.com
predicates:
- Query=url,qq
版权声明:本文为weixin_40803117原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。