下載地址:https://github.com/alibaba/nacos/releaseshtml
下載後解壓,打開 bin 目錄,雙擊 startup.cmd 便可運行,出現錯誤可參考:http://www.javashuo.com/article/p-umsecpik-kh.htmljava
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
spring: application: name: gulimall-coupon # 服務名稱 cloud: nacos: discovery: server-addr: 127.0.0.1:8848 # nacos地址
四、運行須要註冊的服務、打開瀏覽器輸入http://127.0.0.1:8848/nacos ,用戶名密碼默認是 nacos,進入後點擊服務列表就能夠看到全部註冊的服務了mysql
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
告訴 SpringCloud 這個接口須要調用的遠程服務,接口方法的請求地址、名稱、返回值要與被調用的方法一致git
//指定調用的遠程服務名 @FeignClient("gulimall-coupon") public interface CouponFeignService { @RequestMapping("/coupon/coupon/member/list") public R memberCoupons(); }
@SpringBootApplication @EnableDiscoveryClient //指定本身建立的遠程接口的位置 @EnableFeignClients(basePackages = "com.sjl.gulimall.member.feign") public class GulimallMemberApplication { public static void main(String[] args) { SpringApplication.run(GulimallMemberApplication.class, args); } }
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
bootstrap.properties
# 服務名 spring.application.name=gulimall-coupon # nacos地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848
完成上述兩步後,應用會從 Nacos Config 中獲取相應的配置,並添加在 Spring Environment 的 PropertySources 中。要想打開動態刷新,還須要在當前類加上 @RefreshScope
註解github
@RefreshScope //開啓動態刷新 @RestController @RequestMapping("coupon/coupon") public class CouponController { @Value("${coupon.user.name}") private String name; //coupon.user.name=張三 @Value("${coupon.user.age}") private Integer age; //coupon.user.age=18 @RequestMapping("/test") public R test(){ return R.ok().put("name", name).put("age", age); } }
進入 Nacos 控制檯,新建一個配置文件,命名爲服務名.properties
spring
當咱們將配置文件的值修改後,訪問的數據也會 更新,若是配置中心和當前應用都配置了相同的項,優先使用配置中心的配置sql
用於進行租戶粒度的配置隔離。不一樣的命名空間下,能夠存在相同的 Group 或 DataID 的配置。Namespace 的經常使用場景之一是不一樣環境的配置的區分隔離,例如開發測試環境和生產環境的資源(如配置、服務)隔離等。bootstrap
Nacos 中默認有一個 public 保留空間,默認全部新增的配置都放在這個空間中api
咱們能夠在 Nacos 可視化界面建立本身的命名空間瀏覽器
新建一個配置文件,併發布,命名規則爲服務名.properties
在 bootstrap.properties
文件中指定命名空間的惟一標識,重啓該服務,便可訪問
spring.cloud.nacos.config.namespace=5a8f07f8-9fc0-480e-9d31-1a1800b7530b
一組相關或者不相關的配置項的集合稱爲配置集。在系統中,一個配置文件一般就是一個配
置集,包含了系統各個方面的配置。例如,一個配置集可能包含了數據源、線程池、日誌級
別等配置項。
Nacos中的某個配置集的 ID。 配置集ID是組織劃分配置的維度之一。DataID 一般用於組織劃分系統的配置集。一個系統或者應用能夠包含多個配置集,每一個配置集均可以被一個有意義的名稱標識。DataID 一般採用類Java 包(如com.taobao.tc.refund.log.level) 的命名規則保證全局惟一性。 此命名規則非強制。
相似配置文件名
Nacos 中的一組配置集,是組織配置的維度之一。經過一個有意義的字符串(如 Buy 或 Trade )對配置集進行分組,從而區分DataID 相同的配置集。當您在 Nacos 上建立一個配置時,若是未填寫配置分組的名稱,則配置分組的名稱默認採用DEFAULT_ GROUP。
在 Nacos 中新建一個分組後,須要在 bootstrap.properties
中指定本身要使用的分組
spring.cloud.nacos.config.group=dev
一般將每一個微服務建立本身的命名空間,使用dev、prod、test等名稱做爲配置分組,區分環境
有了 Nacos 配置中心,咱們就能夠將全部的配置文件都放在配置中內心管理,項目裏只保留一個bootstrap.properties
,很是便於管理
好比,如今將咱們本來的配置文件 application.yml
拆分爲幾個部分放到配置中心
數據源配置:datasource.yml
spring: datasource: url: jdbc:mysql://192.168.56.10:3306/gulimall_sms driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root
mybatis 配置:mybatis.yml
mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml global-config: db-config: id-type: auto
其餘配置:other.yml
server: port: 7000 spring: application: name: gulimall-coupon datasource: url: jdbc:mysql://192.168.56.10:3306/gulimall_sms driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root cloud: nacos: discovery: server-addr: 127.0.0.1:8848
咱們還須要在 bootstrap.properties
中配置以下信息
data-id:配置文件名
group:分組名
refresh:自動刷新(默認是false),即 修改了配置中心的值後是否刷新
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml spring.cloud.nacos.config.ext-config[0].group=dev spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml spring.cloud.nacos.config.ext-config[1].group=dev spring.cloud.nacos.config.ext-config[1].refresh=true spring.cloud.nacos.config.ext-config[2].data-id=other.yml spring.cloud.nacos.config.ext-config[2].group=dev spring.cloud.nacos.config.ext-config[2].refresh=true
點進源碼可發現此配置是個 List 集合,所以能夠配置多個
配置完成後,能夠訪問相關接口測試一下
更多配置請參考 Nacos 官方文檔:https://nacos.io/zh-cn/docs/what-is-nacos.html
網關做爲流量的入口,經常使用功能包括路由轉發、權限校驗、限流控制等。而 springcloud gateway 做爲 SpringCloud 官方推出的第二代網關框架,取代了 Zuul 網關。
開啓服務註冊發現、配置 Nacos 註冊中心、配置中心地址、端口
server: port: 88 spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=24b9f0bf-ac39-431e-80f0-4daa0b923b7a
配置路由,使咱們輸入localhost:88?query=baidu
能夠跳轉到百度官網,輸入localhost:88?query=qq
能夠跳轉到qq官網
spring: cloud: gateway: routes: - id: test_baidu uri: https://www.baidu.com predicates: - Query=query,baidu - id: test_qq uri: https://www.qq.com predicates: - Query=query,qq
官方文檔:https://cloud.spring.io/spring-cloud-gateway/2.1.x/single/spring-cloud-gateway.html