javascript
springcloud配置文件上传大小_SpringCloud实战二-Nacos
引入
在微服務中,可能有很多服務消費者和服務提供者,我們需要維護這一部分的數據或者內容(服務地址、端口、狀態),此時我們引入服務發現(Service Discovery)的概念。
簡易服務發現:
我們在服務發現組件中記錄服務消費者和服務提供者的的相關信息,便于服務消費者來調用服務提供者,此時如果微服務特別多,難免給mysql造成壓力,此時我們做一個小的優化,在消費者和組件之間加一個緩存,獲取調用者信息時,先從換從查找,再調用消費者。
此時雖然有了緩存,但是微服務的狀態我們無法實時提供,可能某一臺服務器“掛”了,組件無法知曉,則會出現無法響應的問題,此時我們再做一個優化,讓每一臺服務器給組件發送心跳,在組件中加一個字段,存儲這個心跳時間,如果很久沒有更新心跳,則將status變為DOWN。
此時我們完成了一個較理想狀態的服務發現演變過程。
什么是Nacos
上述是服務發現的白話原理,我們可以使用現成的服務發現組件:Eureka(2.0不再維護)、Nacos、Consul,下面著重了解Nacos詳細描述可以看Nacos官方文檔:https://nacos.io/zh-cn/docs/what-is-nacos.html簡單地說,nacos可以做兩件事:1.服務發現2.配置中心(類似于Spring Cloud Config)
搭建Nacos Serve
下載:https://github.com/alibaba/nacos/releases
下載nacos-server-1.2.1.zip解壓參考官方文檔,windows執行
cmd startup.cmd -m standalone輸入用戶名密碼(都是):nacos
修改配置文件application.properties,加入自己安裝mysql引入依賴spring-boot-starter-security添加代碼生成加密后的密碼
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;public class Main {public static void main(String[] args) {System.out.println(new BCryptPasswordEncoder().encode("你的密碼"));} }將生成的加密字符串替換數據庫中的密碼即可完成修改密碼
登陸后:
將應用注冊到Nacos
創建user-center項目
添加配置文件
spring:cloud:nacos:discovery:# 指定nacos server的地址server-addr: localhost:8848application:# 服務名稱盡量用-,不要用_,不要用特殊字符name: user-center server:port: 8081直接啟動即可,出現下圖注冊成功
創建content-center項目注冊到Nacos Server使用springCloud自帶的discoveryClient進行測試(在注冊中心尋找user-center)
@RestController public class TestControl {@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/test")public List<ServiceInstance> test(){return discoveryClient.getInstances("user-center");} }上圖可以發現已經成功找到user-center
啟動兩個user-center
拓展,通過java8獲取instances中uri的內容并返回,可替換固定的鏈接
String url = instances.stream().map(instance->instance.getUri().toString()).findFirst().orElseThrow(()->new IllegalAccessException("沒有發現"));總結
上述已完成服務發現的功能,后續集群還可以設置領域模型(配置文件中配置namespace、group、service、cluster、instance),還可以設置元數據來控制版本。
后續上傳git代碼(現在的實例比較簡單)
欲知后事
后續介紹Ribbon實現負載均衡以及Feign進行服務之間的調用
后續會持續更新,可以關注公眾號: 阿清的日常
后臺留言,會細致解答。
總結
以上是生活随笔為你收集整理的springcloud配置文件上传大小_SpringCloud实战二-Nacos的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中常用的序列化模块_Pyth
- 下一篇: python源码编译 带tkinter_