国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

這篇具有很好參考價(jià)值的文章主要介紹了39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、SpringCloud。

(1)Nacos配置管理。

(1.1)nacos中添加配置文件、微服務(wù)引入依賴(lài),并配置bootstrap.yml文件。

(1.2)獲取配置文件信息,實(shí)現(xiàn)熱更新。

(1.3)多環(huán)境配置共享。

(1.4)多服務(wù)共享配置。

(2)http客戶(hù)端Feign。

(2.1)RestTemplate方式調(diào)用存在的問(wèn)題。

(2.2)導(dǎo)入feign依賴(lài),開(kāi)啟feign,編寫(xiě)feign客戶(hù)端。

(2.3)自定義配置——日志配置。

(2.4)性能優(yōu)化—連接池。

(2.5)Feign的最佳實(shí)踐—兩種方式。

(2.6)Feign的最佳實(shí)踐—抽取feign模塊。

(3)網(wǎng)關(guān)Gateway。

(3.1)網(wǎng)關(guān)的作用。

(3.2)搭建網(wǎng)關(guān)服務(wù)—導(dǎo)入依賴(lài),配置路由。

(3.3)路由斷言工廠(chǎng)。

(3.4)網(wǎng)關(guān)過(guò)濾器。

(3.5)全局過(guò)濾器(需要自己編寫(xiě))。

(3.6)過(guò)濾器執(zhí)行順序。

(3.7)跨域問(wèn)題處理。

(3.8)限流過(guò)濾器(僅供參考)。

二、搭建Nacos集群。?

(1)搭建集群的基本步驟:

(2)搭建數(shù)據(jù)庫(kù),初始化數(shù)據(jù)庫(kù)表結(jié)構(gòu)。

(2)下載nacos安裝包。

(3)?配置nacos。

(3.1)修改cluster.conf文件。

(3.2)?修改application.properties文件。

(3.3)復(fù)制三個(gè)nacos,并修改三個(gè)nacos的端口。

(4)啟動(dòng)nacos。

(5)nginx反向代理。

(6)訪(fǎng)問(wèn)nacos服務(wù)端。


一、SpringCloud。

(1)Nacos配置管理。

(1.1)nacos中添加配置文件、微服務(wù)引入依賴(lài),并配置bootstrap.yml文件。

注意:如果nacos中的文件寫(xiě)在public之外的命名空間,則在bootstrap文件要在config下寫(xiě)上namespace(命名空間),不然報(bào)錯(cuò)或讀取為null(因?yàn)槟J(rèn)是public命名空間)。?

提示:下面寫(xiě)的dev指的是開(kāi)發(fā)環(huán)境使用的配置,而不是dev命名空間。(該服務(wù)只能讀取它的命名空間下的多環(huán)境配置,不可跨越namespace讀取

spring:
  application:
    name: userservice
  profiles:
    active: dev # 環(huán)境
  cloud:
    nacos:
#      server-addr: localhost:8848 # nacos地址可以寫(xiě)在這里,也可以寫(xiě)在config那里
#      namespace: 638a9517-13dd-4e8a-921a-59db18ab1368 # *****不能在這寫(xiě),會(huì)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)
      config:  # 推薦寫(xiě)到config下面
        server-addr: localhost:8848
        namespace: 638a9517-13dd-4e8a-921a-59db18ab1368 # 這里一定是這樣寫(xiě),不然一直報(bào)錯(cuò)(解析不了注入的屬性名等等問(wèn)題)
        file-extension: yaml # 文件后綴名

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(1.2)獲取配置文件信息,實(shí)現(xiàn)熱更新。

有兩種方式:

第一種方式:

@RefreshScope注解+@Value("${pattern.dateformat}")注解(獲取配置文件屬性值)

第二種方式:

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(1.3)多環(huán)境配置共享。

注意:nacos中的多環(huán)境配置文件命名空間與服務(wù)的命名空間要一致。?

優(yōu)先級(jí):[服務(wù)名]-[環(huán)境].yaml >[服務(wù)名].yaml > 本地配置

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(1.4)多服務(wù)共享配置。

提示:看最后四行就行,最后四行是多服務(wù)共享配置的兩種方式。?

spring:
  application:
    name: userservice
  profiles:
    active: dev # 環(huán)境
  cloud:
    nacos:
#      server-addr: localhost:8848 # nacos地址可以寫(xiě)在這里,也可以寫(xiě)在config那里
#      namespace: 638a9517-13dd-4e8a-921a-59db18ab1368 # *****不能在這寫(xiě),會(huì)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)報(bào)錯(cuò)
      config:  # 推薦寫(xiě)到config下面
        server-addr: localhost:8848
#        namespace: 638a9517-13dd-4e8a-921a-59db18ab1368 # 這里一定是這樣寫(xiě),不然一直報(bào)錯(cuò)(解析不了注入的屬性名等等問(wèn)題)
        file-extension: yaml # 文件后綴名
        extension-configs:
          - dataId: orderservice.yaml
#        shared-configs:
#          - dataId: orderservice.yaml

?第一種方式:在config下添加。

shared-configs:
  - dataId: orderservice.yaml

第二種方式:在config下添加。

extension-configs:
  - dataId: orderservice.yaml

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(2)http客戶(hù)端Feign。

(2.1)RestTemplate方式調(diào)用存在的問(wèn)題。

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(2.2)導(dǎo)入feign依賴(lài),開(kāi)啟feign,編寫(xiě)feign客戶(hù)端。

1、導(dǎo)入依賴(lài)。?

<!--feign客戶(hù)端依賴(lài)包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、開(kāi)啟Feign。?

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
@EnableFeignClients
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

?3、編寫(xiě)Feign客戶(hù)端。

@FeignClient("userservice")
public interface UserClient {
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(2.3)自定義配置——日志配置。

第二種方式—局部配置(代碼配置):

@FeignClient(value = "userservice",configuration = DefaultFeignConfiguration.class)
public interface UserClient {
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(2.4)性能優(yōu)化—連接池。

<!--引入HttpClient依賴(lài)-->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>
        <dependency>
feign:
  httpclient:
    enabled: true # 支持HttpClient的開(kāi)關(guān)
    max-connections: 200 # 最大連接數(shù)
    max-connections-per-route: 50 # 單個(gè)路徑的最大連接數(shù)

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(2.5)Feign的最佳實(shí)踐—兩種方式。

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(2.6)Feign的最佳實(shí)踐—抽取feign模塊。

feign-api模塊中:?

//@FeignClient(value = "userservice",configuration = DefaultFeignConfiguration.class)
@FeignClient(value = "userservice")
public interface UserClient {
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}
public class DefaultFeignConfiguration {
    @Bean
    public Logger.Level logLevel(){
        return Logger.Level.BASIC;
    }
}
@Data
public class User {
    private Long id;
    private String username;
    private String address;
}

?在需要使用Feign的微服務(wù)pom中:?

<!--引入feign的統(tǒng)一api,這個(gè)模塊是自己寫(xiě)的-->
        <dependency>
            <groupId>cn.itcast.demo</groupId>
            <artifactId>feign-api</artifactId>
            <version>1.0</version>
        </dependency>

作用:引入這個(gè)依賴(lài)后,可以使用這個(gè)模塊的類(lèi)。?


39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3)網(wǎng)關(guān)Gateway。

(3.1)網(wǎng)關(guān)的作用。

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3.2)搭建網(wǎng)關(guān)服務(wù)—導(dǎo)入依賴(lài),配置路由。

1、這里的網(wǎng)關(guān)也是一個(gè)微服務(wù)(新模塊),在pom中導(dǎo)入依賴(lài):

    <dependencies>
        <!--nacos服務(wù)注冊(cè)發(fā)現(xiàn)依賴(lài)-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--網(wǎng)關(guān)gateway依賴(lài)-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
    </dependencies>

2、在application.yaml配置文件中配置:

注意:請(qǐng)求進(jìn)入網(wǎng)關(guān)的時(shí)候:先predicates(斷言,如果滿(mǎn)足)—> uri(去nacos獲取服務(wù)地址)

server:
  port: 10010
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:80
    gateway:
      routes:
        - id: user-service #路由標(biāo)識(shí)
          uri: lb://userservice #路由的目標(biāo)地址
          predicates: #路由斷言,判斷請(qǐng)求是否符合規(guī)則
            - Path=/user/** #路徑斷言,判斷路徑是否是以/user開(kāi)頭,如果是則符合規(guī)則(發(fā)到uri: lb://userservice中去)
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3.3)路由斷言工廠(chǎng)。

注意:斷言工廠(chǎng)根據(jù)需求,到spring官方網(wǎng)站查找,有具體語(yǔ)法。

提示:比如下面的,要滿(mǎn)足predicates中的Path與Before才能算是符合條件,然后路由到uri地址。?

- id: order-service
  uri: lb://orderservice
  predicates:
    - Path=/order/**
    - Before=2031-01-20T17:42:47.789-07:00[America/Denver]

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3.4)網(wǎng)關(guān)過(guò)濾器。

注意:過(guò)濾器工廠(chǎng)有37種,根據(jù)需求到spring官方網(wǎng)站查找使用,有具體使用語(yǔ)法。

server:
  port: 10010
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:80
    gateway:
      routes:
        - id: user-service #路由標(biāo)識(shí)
          uri: lb://userservice #路由的目標(biāo)地址
          predicates: #路由斷言,判斷請(qǐng)求是否符合規(guī)則
            - Path=/user/** #路徑斷言,判斷路徑是否是以/user開(kāi)頭,如果是則符合規(guī)則(發(fā)到uri: lb://userservice中去)
#          filters:
#            - AddRequestHeader=Truth,Itcast is freaking aowsome!
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**
            - Before=2031-01-20T17:42:47.789-07:00[America/Denver]
      default-filters:
        - AddRequestHeader=Truth,Itcast is freaking aowsome!

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3.5)全局過(guò)濾器(需要自己編寫(xiě))。

//@Order(-1)
@Component
public class AuthorizeFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        //1.獲取請(qǐng)求參數(shù)
        ServerHttpRequest request = exchange.getRequest();
        //2.獲取參數(shù)中的authorization參數(shù)
        MultiValueMap<String, String> params = request.getQueryParams();
        //3.判斷參數(shù)值是否等于 admin
        String authorization = params.getFirst("authorization");
        if ("admin".equals(authorization)){
            //4.相等,放行
            return chain.filter(exchange);
        }
        //5.不相等,攔截
        //5.1設(shè)置狀態(tài)碼
        exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
        //5.2攔截請(qǐng)求
        return exchange.getResponse().setComplete();
    }

    @Override
    public int getOrder() {
        return -1;
    }
}

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3.6)過(guò)濾器執(zhí)行順序。

注意:

1、網(wǎng)關(guān)斷言成功后過(guò)濾器才開(kāi)始合并成一個(gè)過(guò)濾器鏈。

2、路由過(guò)濾器與DefaultFilter都是各自從1開(kāi)始計(jì)數(shù)(因?yàn)檫@兩種都可以有很多個(gè))。

3、全局過(guò)濾器自己定義大?。J(rèn)的order值非常大)


39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3.7)跨域問(wèn)題處理。

跨域:就是在一個(gè)網(wǎng)頁(yè)中,請(qǐng)求跟它的IP地址或端口不一樣的資源。

如果HTML文件所在的源為A,而請(qǐng)求數(shù)據(jù)的目標(biāo)源為B,由B服務(wù)器返回的響應(yīng)數(shù)據(jù)如果包含Access-Control-Allow-Origin頭,其中值為A,那么瀏覽器就認(rèn)為這是一次合法的跨域請(qǐng)求,會(huì)允許響應(yīng)數(shù)據(jù)返回給A客戶(hù)端。但如果沒(méi)有這個(gè)頭或者值不是A,則會(huì)被瀏覽器攔截,導(dǎo)致跨域問(wèn)題。

spring:
  cloud:
    gateway:
      globalcors: # 全局的跨域處理
        add-to-simple-url-handler-mapping: true # 解決options請(qǐng)求被攔截問(wèn)題
        corsConfigurations:
          '[/**]':
            allowedOrigins: # 允許哪些網(wǎng)站的跨域請(qǐng)求
              - "http://localhost:8090"
              - "http://www.leyou.com"
            allowedMethods: # 允許的跨域ajax的請(qǐng)求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允許在請(qǐng)求中攜帶的頭信息
            allowCredentials: true # 是否允許攜帶cookie
            maxAge: 360000 # 這次跨域檢測(cè)的有效期

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

(3.8)限流過(guò)濾器(僅供參考)。

39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway

二、搭建Nacos集群。?

(1)搭建集群的基本步驟:

  • 搭建數(shù)據(jù)庫(kù),初始化數(shù)據(jù)庫(kù)表結(jié)構(gòu)
  • 下載nacos安裝包
  • 配置nacos
  • 啟動(dòng)nacos集群
  • nginx反向代理

(2)搭建數(shù)據(jù)庫(kù),初始化數(shù)據(jù)庫(kù)表結(jié)構(gòu)。

作用:Nacos 集群可以選擇使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)服務(wù)和配置信息,其主要目的是提高數(shù)據(jù)的可靠性和持久化能力。

為什么使用數(shù)據(jù)庫(kù):

Nacos默認(rèn)數(shù)據(jù)存儲(chǔ)在內(nèi)嵌數(shù)據(jù)庫(kù)Derby中,不屬于生產(chǎn)可用的數(shù)據(jù)庫(kù)。(Nacos中默認(rèn)使用的嵌入式數(shù)據(jù)庫(kù) Derby,雖然它可以滿(mǎn)足基本使用需求,但在生產(chǎn)環(huán)境中不建議使用,因?yàn)樗⒉痪邆涓呖捎眯院涂煽啃缘确矫娴膬?yōu)勢(shì),不能保證在重要數(shù)據(jù)丟失時(shí)能夠快速恢復(fù)。)


首先新建一個(gè)數(shù)據(jù)庫(kù),命名為nacos,而后導(dǎo)入下面的SQL:

CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶(hù)字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
/******************************************/
/*   數(shù)據(jù)庫(kù)全名 = nacos_config   */
/*   表名稱(chēng) = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '內(nèi)容',
  `gmt_modified` datetime NOT NULL COMMENT '修改時(shí)間',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶(hù)字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租戶(hù)字段';
/******************************************/
/*   數(shù)據(jù)庫(kù)全名 = nacos_config   */
/*   表名稱(chēng) = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶(hù)字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
/******************************************/
/*   數(shù)據(jù)庫(kù)全名 = nacos_config   */
/*   表名稱(chēng) = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
/******************************************/
/*   數(shù)據(jù)庫(kù)全名 = nacos_config   */
/*   表名稱(chēng) = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
/******************************************/
/*   數(shù)據(jù)庫(kù)全名 = nacos_config   */
/*   表名稱(chēng) = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整個(gè)集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配額,0表示使用默認(rèn)值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個(gè)配置大小上限,單位為字節(jié),0表示使用默認(rèn)值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大個(gè)數(shù),,0表示使用默認(rèn)值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個(gè)聚合數(shù)據(jù)的子配置大小上限,單位為字節(jié),0表示使用默認(rèn)值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大變更歷史數(shù)量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
/******************************************/
/*   數(shù)據(jù)庫(kù)全名 = nacos_config   */
/*   表名稱(chēng) = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租戶(hù)字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租戶(hù)改造';
/******************************************/
/*   數(shù)據(jù)庫(kù)全名 = nacos_config   */
/*   表名稱(chēng) = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配額,0表示使用默認(rèn)值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個(gè)配置大小上限,單位為字節(jié),0表示使用默認(rèn)值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大個(gè)數(shù)',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '單個(gè)聚合數(shù)據(jù)的子配置大小上限,單位為字節(jié),0表示使用默認(rèn)值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大變更歷史數(shù)量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租戶(hù)容量信息表';
CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '創(chuàng)建時(shí)間',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改時(shí)間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);
CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

(2)下載nacos安裝包。

nacos在GitHub上有下載地址:https://github.com/alibaba/nacos/tags,可以選擇任意版本下載。

(3)?配置nacos。

(3.1)修改cluster.conf文件。

nacos/conf/cluster.conf.example 文件是一個(gè)示例集群配置文件,它包含了在 Nacos 集群中至少需要三個(gè)節(jié)點(diǎn)的 IP 地址和端口等信息。具體來(lái)說(shuō),cluster.conf.example 文件中每行的格式為:

nodeIp:port

其中 nodeIp 為節(jié)點(diǎn)的 IP 地址,port 為節(jié)點(diǎn)監(jiān)聽(tīng)的端口號(hào)。

cluster.conf.example 文件的作用是提供一份集群配置的范例,方便用戶(hù)進(jìn)行參考和修改。當(dāng)需要將 Nacos 部署成集群模式時(shí),用戶(hù)可以通過(guò)修改該文件來(lái)配置集群中各節(jié)點(diǎn)的地址和端口號(hào)。此外,用戶(hù)還可以根據(jù)實(shí)際需求增加或刪除集群節(jié)點(diǎn)的信息。

需要注意的是,cluster.conf.example 文件需要重命名為 cluster.conf 才能生效。重命名后,Nacos 會(huì)自動(dòng)讀取該文件的配置信息并將節(jié)點(diǎn)加入到集群中。


1、進(jìn)入nacos的conf目錄,修改配置文件cluster.conf.example,重命名為cluster.conf。

然后添加內(nèi)容(在cluster.conf下面添加上,把原本的地址刪掉):按照nacos結(jié)點(diǎn)的地址添加。

127.0.0.1:8845
127.0.0.1.8846
127.0.0.1.8847

作用解析:?

通過(guò)在 Nacos 的 conf 目錄下創(chuàng)建 cluster.conf 文件,并在其中添加節(jié)點(diǎn)的 IP 地址和端口信息,可以使不同的 Nacos 節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)同步和協(xié)調(diào),從而實(shí)現(xiàn)高可用性和負(fù)載均衡。

具體來(lái)講,在 Nacos 集群中,每個(gè)節(jié)點(diǎn)都會(huì)讀取 cluster.conf 文件,并嘗試連接其中列出的其它節(jié)點(diǎn)。如果節(jié)點(diǎn)之間能夠成功建立連接,它們就會(huì)使用 Raft 協(xié)議進(jìn)行數(shù)據(jù)同步和狀態(tài)機(jī)復(fù)制,并按照一定的算法選舉 leader 節(jié)點(diǎn),從而實(shí)現(xiàn)數(shù)據(jù)的高可用性和一致性。

例如,當(dāng)一個(gè)客戶(hù)端向 Nacos 集群中的某個(gè)節(jié)點(diǎn)發(fā)起注冊(cè)服務(wù)的請(qǐng)求時(shí),該節(jié)點(diǎn)會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給 leader 節(jié)點(diǎn)處理,并等待 leader 節(jié)點(diǎn)返回響應(yīng)。如果 leader 節(jié)點(diǎn)出現(xiàn)故障,集群中的其它節(jié)點(diǎn)會(huì)重新進(jìn)行 leader 選舉,以選出新的 leader 節(jié)點(diǎn),并確保服務(wù)的繼續(xù)注冊(cè)和發(fā)現(xiàn)。

因此,通過(guò)在 cluster.conf 中配置節(jié)點(diǎn)信息,我們可以實(shí)現(xiàn)多節(jié)點(diǎn)之間的數(shù)據(jù)同步和狀態(tài)機(jī)復(fù)制,從而提供高可用性和負(fù)載均衡的服務(wù)。這也是在分布式系統(tǒng)中常見(jiàn)的一種數(shù)據(jù)復(fù)制和高可用性實(shí)現(xiàn)方式。

(3.2)?修改application.properties文件。

添加數(shù)據(jù)庫(kù)配置:

注意:這里面的配置都有,只需刪除注釋標(biāo)識(shí)符就行,然后根據(jù)實(shí)際情況修改。?

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123

(3.3)復(fù)制三個(gè)nacos,并修改三個(gè)nacos的端口。

注意:是把完成了上面(3.1)(3.2)操作的nacos復(fù)制三個(gè)。

將nacos文件夾復(fù)制三份,分別命名為:nacos1、nacos2、nacos3。

然后分別修改三個(gè)文件夾中的application.properties:

nacos1:

server.port=8845

nacos2:

server.port=8846

nacos3:

server.port=8847

(4)啟動(dòng)nacos。

然后分別啟動(dòng)三個(gè)nacos節(jié)點(diǎn):

startup.cmd

注意: nacos集群?jiǎn)?dòng)和單體啟動(dòng)是不一樣的,單體nacos啟動(dòng)需要添加參數(shù)。

(5)nginx反向代理。

1、下載nginx,解壓到任意非中文目錄下。

2、修改conf/nginx.conf文件,配置如下:

注意:復(fù)制到http語(yǔ)句塊的任意位置都可以,但一定要在http語(yǔ)句塊內(nèi)。

upstream nacos-cluster {
    server 127.0.0.1:8845;
	server 127.0.0.1:8846;
	server 127.0.0.1:8847;
}

server {
    listen       80;
    server_name  localhost;

    location /nacos {
        proxy_pass http://nacos-cluster;
    }
}

3、進(jìn)入cmd,啟動(dòng)nginx.exe程序。

start nginx.exe?

(6)訪(fǎng)問(wèn)nacos服務(wù)端。

在瀏覽器訪(fǎng)問(wèn):http://localhost/nacos即可。

在微服務(wù)的application.yml文件中的配置如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-499751.html

spring:
  cloud:
    nacos:
      server-addr: localhost:80 # Nacos地址

到了這里,關(guān)于39.SpringCloud—配置管理nacos、遠(yuǎn)程調(diào)用Feign、服務(wù)網(wǎng)關(guān)Gateway的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微服務(wù)Day3——Nacos配置管理\Feign遠(yuǎn)程調(diào)用\Gateway網(wǎng)關(guān)

    微服務(wù)Day3——Nacos配置管理\Feign遠(yuǎn)程調(diào)用\Gateway網(wǎng)關(guān)

    當(dāng)微服務(wù)部署的實(shí)例越來(lái)越多,達(dá)到數(shù)十、數(shù)百時(shí),逐個(gè)修改微服務(wù)配置就會(huì)讓人抓狂,而且很容易出錯(cuò)。我們需要一種統(tǒng)一配置管理方案,可以集中管理所有實(shí)例的配置。 Nacos一方面可以將配置集中管理,另一方可以在配置變更時(shí),及時(shí)通知微服務(wù),實(shí)現(xiàn)配置的熱更新。

    2024年02月16日
    瀏覽(18)
  • Spring Cloud Day2 Nacos配置管理、Feign遠(yuǎn)程調(diào)用與Gateway服務(wù)網(wǎng)關(guān)

    Spring Cloud Day2 Nacos配置管理、Feign遠(yuǎn)程調(diào)用與Gateway服務(wù)網(wǎng)關(guān)

    Nacos除了可以做注冊(cè)中心,同樣可以做配置管理來(lái)使用。 當(dāng)微服務(wù)部署的實(shí)例越來(lái)越多,達(dá)到數(shù)十、數(shù)百時(shí),逐個(gè)修改微服務(wù)配置就會(huì)讓人抓狂,而且很容易出錯(cuò)。我們需要一種統(tǒng)一配置管理方案,可以集中管理所有實(shí)例的配置。 Nacos一方面可以將配置集中管理,另一方可以

    2024年02月10日
    瀏覽(21)
  • SpringCloud Alibaba(一)微服務(wù)簡(jiǎn)介+Nacos的安裝部署與使用+Nacos集成springboot實(shí)現(xiàn)服務(wù)注冊(cè)+Feign實(shí)現(xiàn)服務(wù)之間的遠(yuǎn)程調(diào)用+負(fù)載均衡+領(lǐng)域劃分

    SpringCloud Alibaba(一)微服務(wù)簡(jiǎn)介+Nacos的安裝部署與使用+Nacos集成springboot實(shí)現(xiàn)服務(wù)注冊(cè)+Feign實(shí)現(xiàn)服務(wù)之間的遠(yuǎn)程調(diào)用+負(fù)載均衡+領(lǐng)域劃分

    目錄 一.認(rèn)識(shí)微服務(wù) 1.0.學(xué)習(xí)目標(biāo) 1.1.單體架構(gòu) 單體架構(gòu)的優(yōu)缺點(diǎn)如下: 1.2.分布式架構(gòu) 分布式架構(gòu)的優(yōu)缺點(diǎn): 1.3.微服務(wù) 微服務(wù)的架構(gòu)特征: 1.4.SpringCloud 1.5Nacos注冊(cè)中心 1.6.總結(jié) 二、Nacos基本使用安裝部署+服務(wù)注冊(cè) (一)linux安裝包方式單節(jié)點(diǎn)安裝部署 1. jdk安裝配置 2. na

    2024年02月09日
    瀏覽(29)
  • 【微服務(wù)】SpringCloud之Feign遠(yuǎn)程調(diào)用

    【微服務(wù)】SpringCloud之Feign遠(yuǎn)程調(diào)用

    ??浩澤學(xué)編程 :個(gè)人主頁(yè) ??? 推薦專(zhuān)欄 :《深入淺出SpringBoot》《java對(duì)AI的調(diào)用開(kāi)發(fā)》 ??????????????《RabbitMQ》《Spring》《SpringMVC》《項(xiàng)目實(shí)戰(zhàn)》 ??學(xué)無(wú)止境,不驕不躁,知行合一 使用Feign遠(yuǎn)程調(diào)用代替RestTemplate遠(yuǎn)程調(diào)用。 使用RestTemplate發(fā)起遠(yuǎn)程調(diào)用: 雖然在引

    2024年04月15日
    瀏覽(23)
  • SpringCloud 核心組件Feign【遠(yuǎn)程調(diào)用&自定義配置】

    SpringCloud 核心組件Feign【遠(yuǎn)程調(diào)用&自定義配置】

    目錄 1,F(xiàn)eign遠(yuǎn)程調(diào)用 1.1:Feign概述 1.2:Feign替代RestTemplate ? ? ? ? 1):引入依賴(lài) ? ? ? ? 2):添加注解 ? ? ? ? 3):編寫(xiě)Feign的消費(fèi)服務(wù),提供服務(wù) ? ? ? ? 4):測(cè)試 ? ? ? ? 5):總結(jié) 1.3:自定義配置 1.3.1:配置文件方式 1.3.2:Java代碼方式 Feign是一款Java語(yǔ)言編寫(xiě)的

    2023年04月08日
    瀏覽(21)
  • 【SpringCloud Alibaba】Nacos服務(wù)管理與Feign負(fù)載均衡

    【SpringCloud Alibaba】Nacos服務(wù)管理與Feign負(fù)載均衡

    目錄 一、微服務(wù)搭建 1.1 服務(wù)提供者與服務(wù)消費(fèi)者 1.2 依賴(lài)關(guān)系 ? 二、服務(wù)注冊(cè)與負(fù)載均衡使用 2.1 Nacos 實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn) 2.2 Loadbalancer負(fù)載均衡、Feign聲明式服務(wù)調(diào)用 2.3 示例綜合實(shí)現(xiàn) 2.3.1 服務(wù)注冊(cè)與發(fā)現(xiàn)測(cè)試 2.3.2 負(fù)載均衡測(cè)試? 服務(wù)提供者 服務(wù)的被調(diào)用方(即:為其他微

    2024年02月03日
    瀏覽(23)
  • Nacos配置管理、Fegin遠(yuǎn)程調(diào)用、Gateway服務(wù)網(wǎng)關(guān)

    Nacos配置管理、Fegin遠(yuǎn)程調(diào)用、Gateway服務(wù)網(wǎng)關(guān)

    Nacos除了可以做注冊(cè)中心,同樣可以做配置管理來(lái)使用。 當(dāng)微服務(wù)部署的實(shí)例越來(lái)越多,達(dá)到數(shù)十、數(shù)百時(shí),逐個(gè)修改微服務(wù)配置就會(huì)讓人抓狂,而且很容易出錯(cuò)。我們需要一種統(tǒng)一配置管理方案,可以集中管理所有實(shí)例的配置。 Nacos一方面可以將配置集中管理,另一方可以

    2024年02月03日
    瀏覽(15)
  • SpringCloud --- Feign遠(yuǎn)程調(diào)用

    SpringCloud --- Feign遠(yuǎn)程調(diào)用

    先來(lái)看我們以前利用RestTemplate發(fā)起遠(yuǎn)程調(diào)用的代碼: 存在下面的問(wèn)題: 代碼可讀性差,編程體驗(yàn)不統(tǒng)一 參數(shù)復(fù)雜URL難以維護(hù) Feign是一個(gè)聲明式的http客戶(hù)端,官方地址:GitHub - OpenFeign/feign: Feign makes writing java http clients easier 其作用就是幫助我們優(yōu)雅的實(shí)現(xiàn)http請(qǐng)求的發(fā)送,解決

    2024年02月05日
    瀏覽(18)
  • SpringCLoud——Feign的遠(yuǎn)程調(diào)用

    SpringCLoud——Feign的遠(yuǎn)程調(diào)用

    來(lái)看一下之前我們使用RestTemplate調(diào)用時(shí)編寫(xiě)的Contrriller代碼: //??????? 2. 利用RestTemplate發(fā)起HTTP請(qǐng)求 //??????? 2.1 url 地址 ??????? String url = \\\"http://userserver/user/\\\" + order.getUserId(); //??????? 2.2 發(fā)送http請(qǐng)求,實(shí)現(xiàn)遠(yuǎn)程調(diào)用 ??????? User user = restTemplate.getForObject(url,

    2024年02月07日
    瀏覽(20)
  • SpringCloud-基于Feign遠(yuǎn)程調(diào)用

    SpringCloud-基于Feign遠(yuǎn)程調(diào)用

    Spring Cloud 是一個(gè)用于構(gòu)建分布式系統(tǒng)的開(kāi)發(fā)工具包,它提供了一系列的微服務(wù)組件,其中之一就是 Feign。Feign 是一種聲明式的 Web 服務(wù)客戶(hù)端,它簡(jiǎn)化了在 Spring Cloud 中進(jìn)行遠(yuǎn)程調(diào)用的過(guò)程。本文將介紹如何在 Spring Cloud 中使用 Feign 進(jìn)行遠(yuǎn)程調(diào)用。 我們?cè)?Spring Cloud 項(xiàng)目的

    2024年02月21日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包