初見Spring-cloud-alibaba(1):Nacos(配置中心+服務注冊中心)踩坑記錄

前言

本文基于nacos 1.0.1版本

小聲BB:懶得弄排版了,直接上筆記

  1. Nacos,如果使用高版本的 mysql, 啟動時需要把mysql-connector放到plugin/mysql文件夾下,因為項目默認依賴的mysql-connector 5.1.34,所以會導致驅動不生效而連接失敗

    原因:com.alibaba.nacos.config.server.service.BasicDataSourceServiceImpl
    這個類中有設定好老版本和高版本的mysql驅動路徑,如下
static {
        try {
            Class.forName(MYSQL_HIGH_LEVEL_DRIVER);
            JDBC_DRIVER_NAME = MYSQL_HIGH_LEVEL_DRIVER;
            log.info("Use Mysql 8 as the driver");
        } catch (ClassNotFoundException e) {
            log.info("Use Mysql as the driver");
            JDBC_DRIVER_NAME = DEFAULT_MYSQL_DRIVER;
        }
    }

如果是直接在編譯器中啟動該程序的話,需要找到nacos-all/pom.xml 里修改mysql-connector的version,如果是直接從程序包里啟動的話,則將jar包添加到plugins/mysql 即可

P.S. 由于連接DB失敗并不影響應用啟動,但是會導致設定好的登陸用戶名密碼無法使用,所以如果發現用戶名密碼設定失敗的話,去查看日志會發現有可能就是SB的問題

  1. 補充1.:淦,用了上述的方法毫無作用,還是連不上數據庫,必須要自己重新編譯,這項目有坑,無法兼容高版本MYSQL
    com.alibaba.nacos.naming.healthcheck
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

這個地方必須低版本MYSQL才有這個類,高版本的路徑已經變了

所以上面這段兼容代碼完全木有卵用

  1. windows的cmd腳本里默認了是stand alone單機模式的,想要在windows下測試集群得修改startup.cmd腳本,里面的MODE改成默認cluster集群模式
    Just like this

    BAT代碼

  2. Nacos 支持環境隔離,參考阿里的nacos blog
    https://nacos.io/zh-cn/blog/address-server.html

  3. 關于1.和2.的補充,查看update log里說1.0.0已經支持MYSQL 8的driver了,然而我用1.0.1還是不行……issue里貌似也有不少抱怨的,先不管了

  4. nacos-config 就是一個配置中心的作用,用于分布式全局配置的作用,實際上跟.properties文件的屬性配置類似,但它可以用于分布式環境中的集中式中心配置的作用,例如在nacos集群中配置好了相應的屬性,那么應用程序中可以直接通過注解式的代碼進行訪問,單臺nacos服務器配置的屬性可以自動同步到整個集群
    Just like this:

@RefreshScope   
class SampleController {
  @Value("${user.name}")   
  String userName;
  @Value("${user.age}")   
  int age;
 }

如上的代碼中的user.name和age就是從配置中心中獲得的,更多細節參考:
https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md

  1. Nacos-config 的配置有部分是先于application就開始使用的,所以必須要寫在bootstrap.properties上,如果寫到application.properties上會撲街

  2. Nacos 集群模式搭建的時候,有可能會因為局域網的網卡問題導致集群leader選舉失敗,需要進行網卡設置,具體參考文檔中的https://nacos.io/zh-cn/docs/deployment.html

  3. 關于8的補充,我使用了網卡配置,開啟了局域網IP選項為true,并且設置了127.0.0.1為本機IP,日志顯示集群選舉成功,但是服務注冊依舊撲街,返回503 server is down,翻issue發現是bughttps://github.com/alibaba/nacos/issues/1189,維護者說是1.0.0的bug,將會在1.0.1 fix,然鵝在下使用的1.0.1了還是有這個bug,但是暫時不知道是不是跟我單機環境開啟集群造成的問題,后續有了測試服務器再嘗試
    最后解決的方法是使用了網絡上的ip,設置局域網IP開關為false,結果就注冊成功了,先記錄下

  4. ConfigService不能直接得到,要通過NacosConfigProperties注入然后configServiceInstance()方法獲得

  5. nacos的SDK提供了配置中心和服務中心的操作API,基本的CRUD操作都有,具體查看https://nacos.io/zh-cn/docs/sdk.html

  6. nacos集成了spring cloud的ribbon和feign,可以直接用它們來做基礎的RPC。RPC的URL中記得加入目標服務的context-root,因為從nacos里獲取到的只有一個IP,實例化請求的時候url如果沒有context-root就無法指向到正確的接口內

  7. nacos默認有一個nacos/nacos的賬號密碼,會在nacos實例第一次啟動時自動生成數據到users表中,可以將其刪除,然后使用
    org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder這個類,類似:

System.out.println(new BCryptPasswordEncoder().encode("password"));

來生成密碼,該工具類在spring-security-core包中有,然后在users表中插入賬號密碼,賬號明文存儲,密碼則使用加密后的字符串存入,然后在roles表中給對應賬號插入ROLE_ADMIN,則可以新建管理員賬號

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容

  • [TOC] 服務發現 為了實現多個微服務之間的調用,我們除了需要Feign這種調用組件外還得依賴服務發現組件。主要...
    端碗吹水閱讀 1,308評論 0 5
  • 古人云:鷙鳥之將擊,必卑身翕翼;猛獸之將搏,必俯耳俯伏;圣人之將動,必有愚色。 即使有絕對的優勢,...
    出澗閱讀 1,450評論 0 1
  • 房子喜歡有人來家里,它也更敞開,它應該是一個愛笑的女生吧,天天笑呵呵的,沒完沒了,所以它喜歡有人可以在它這里感覺很...
    Abbie_4b10閱讀 115評論 0 0
  • 文|曲婭菲 來源|《一起讀好書》 字數731|閱讀4分鐘 佛陀說教四圣諦:痛苦的存在、痛苦的原因、痛苦的消滅和導致...
    我是曲婭菲閱讀 572評論 0 1