# 网关配置

# 网关

    网关地址:https://gateway-test.tq-service.com
    
    1.所有服务统一通过网关对外访问
    2.正式服务器将只有网关一个对外出入口,其余服务原则上只能集群内部访问
    3.新增服务须到nacos 配置中心配置访问规则方可访问
    4.到nacos配置中心->系统工具列表下,服务中gateway-router.json文件配置route
    eg:
                {
                    "id":"client",
                    "order":0,
                    "predicates":[
                        {
                            "args":{
                                "pattern":"/client/**"
                            },
                            "name":"Path"
                        }
                    ],
                    "uri":"lb://nacos服务名称/"
                }
   配置好后即可通过网关访问自己的服务:网关/(服务名)/(服务内部函数地址)
   如:https://gateway-test.tq-service.com/client/api/demo?t=demo

img

# http方式配置

        {
            "id":"example",
            "order":0,
            "predicates":[{"args":{"pattern":"/example/**"}, "name":"Path"}],
            "uri":"http://ip:port/example/"
        },

# nacos服务方式配置

       {
           "id":"example",
           "order":0,
           "predicates":[{"args":{"pattern":"/example/**"}, "name":"Path"}],
           "uri":"lb://nacos服务名称/example/"
       },

# sentinel

系统集成sentinel流控,实现流量控制,熔断降级,排队,负载,QPS

# 集成方法

  • 1.引入sentinel核心包
        <dependency>
            <groupId>com.jinke.ts</groupId>
            <artifactId>ts-module-sentinel</artifactId>
            <version>${ts.last.version}</version>
        </dependency>
  • 2.新增配置,在bootstrap.yaml新增以下配置,开启服务
        feign:
          sentinel:
            enabled: true
  • 3.新增sentinel服务地址配置
        spring:
          cloud:
            sentinel:
              transport:
                dashboard: sentinel-dashboard.tq-midware.svc.cluster.local:8080
  • 4.完成以上配置后登录后端管理系统即可查看对应的服务
  • 注意:新服务注册需要触发一次对应服务的接口,否则平台无法查看

# 引入feign

  • 首先引入包
        <dependency>
            <groupId>com.jinke.ts</groupId>
            <artifactId>ts-module-feign</artifactId>
            <version>${ts.last.version}</version>
        </dependency>
  • 参照demo编写相应功能
/**
 * @author xiangjx
 * @date 2020-5-9 16:32
 * @Version 1.0
 *  这里的名称为项目服务名称  spring.application.name
 **/
@FeignClient(name = "pay-center-server",fallback = EchoServiceFallback.class)
public interface IDemoService {


    /**
     * context-path: service 名称发生改变SDK也要修改
     *  RequestParam 为必须
     * @param t
     * @return
     */
    @RequestMapping(value = "server/api/demo", method = RequestMethod.GET)
    String demo(@RequestParam("t") String t);
    
    /**
     * @author xiangjx
     * @date 2020-8-19 15:01
     * @Version 1.0
     **/
    public class EchoServiceFallback implements IDemoService{
        public String demo(String t) {
            return "fallback";
        }
    }
/**
 * @author xiangjx
 * @date 2020-8-19 15:01
 * @Version 1.0
 **/
public class EchoServiceFallback implements IDemoService{
    public String demo(String t) {
        return "fallback";
    }
}

}

最后更新日期: 9/1/2021, 7:09:41 AM