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

前言

本文基于nacos 1.0.1版本

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

  1. Nacos昭殉,如果使用高版本的 mysql佳魔, 啟動時(shí)需要把mysql-connector放到plugin/mysql文件夾下鸿市,因?yàn)轫?xiàng)目默認(rèn)依賴的mysql-connector 5.1.34嘁酿,所以會導(dǎo)致驅(qū)動不生效而連接失敗

    原因:com.alibaba.nacos.config.server.service.BasicDataSourceServiceImpl
    這個(gè)類中有設(shè)定好老版本和高版本的mysql驅(qū)動路徑廊镜,如下
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失敗并不影響應(yīng)用啟動配椭,但是會導(dǎo)致設(shè)定好的登陸用戶名密碼無法使用,所以如果發(fā)現(xiàn)用戶名密碼設(shè)定失敗的話雹姊,去查看日志會發(fā)現(xiàn)有可能就是SB的問題

  1. 補(bǔ)充1.:淦股缸,用了上述的方法毫無作用,還是連不上數(shù)據(jù)庫吱雏,必須要自己重新編譯敦姻,這項(xiàng)目有坑,無法兼容高版本MYSQL
    com.alibaba.nacos.naming.healthcheck
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

這個(gè)地方必須低版本MYSQL才有這個(gè)類歧杏,高版本的路徑已經(jīng)變了

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

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

    BAT代碼

  2. Nacos 支持環(huán)境隔離犬绒,參考阿里的nacos blog
    https://nacos.io/zh-cn/blog/address-server.html

  3. 關(guān)于1.和2.的補(bǔ)充旺入,查看update log里說1.0.0已經(jīng)支持MYSQL 8的driver了,然而我用1.0.1還是不行……issue里貌似也有不少抱怨的,先不管了

  4. nacos-config 就是一個(gè)配置中心的作用茵瘾,用于分布式全局配置的作用礼华,實(shí)際上跟.properties文件的屬性配置類似,但它可以用于分布式環(huán)境中的集中式中心配置的作用拗秘,例如在nacos集群中配置好了相應(yīng)的屬性圣絮,那么應(yīng)用程序中可以直接通過注解式的代碼進(jìn)行訪問,單臺nacos服務(wù)器配置的屬性可以自動同步到整個(gè)集群
    Just like this:

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

如上的代碼中的user.name和age就是從配置中心中獲得的聘殖,更多細(xì)節(jié)參考:
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 集群模式搭建的時(shí)候奸腺,有可能會因?yàn)榫钟蚓W(wǎng)的網(wǎng)卡問題導(dǎo)致集群leader選舉失敗餐禁,需要進(jìn)行網(wǎng)卡設(shè)置,具體參考文檔中的https://nacos.io/zh-cn/docs/deployment.html

  3. 關(guān)于8的補(bǔ)充突照,我使用了網(wǎng)卡配置帮非,開啟了局域網(wǎng)IP選項(xiàng)為true,并且設(shè)置了127.0.0.1為本機(jī)IP讹蘑,日志顯示集群選舉成功末盔,但是服務(wù)注冊依舊撲街,返回503 server is down座慰,翻issue發(fā)現(xiàn)是bughttps://github.com/alibaba/nacos/issues/1189陨舱,維護(hù)者說是1.0.0的bug,將會在1.0.1 fix版仔,然鵝在下使用的1.0.1了還是有這個(gè)bug游盲,但是暫時(shí)不知道是不是跟我單機(jī)環(huán)境開啟集群造成的問題,后續(xù)有了測試服務(wù)器再嘗試
    最后解決的方法是使用了網(wǎng)絡(luò)上的ip蛮粮,設(shè)置局域網(wǎng)IP開關(guān)為false益缎,結(jié)果就注冊成功了,先記錄下

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

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

  6. nacos集成了spring cloud的ribbon和feign变泄,可以直接用它們來做基礎(chǔ)的RPC令哟。RPC的URL中記得加入目標(biāo)服務(wù)的context-root,因?yàn)閺膎acos里獲取到的只有一個(gè)IP妨蛹,實(shí)例化請求的時(shí)候url如果沒有context-root就無法指向到正確的接口內(nèi)

  7. nacos默認(rèn)有一個(gè)nacos/nacos的賬號密碼励饵,會在nacos實(shí)例第一次啟動時(shí)自動生成數(shù)據(jù)到users表中,可以將其刪除滑燃,然后使用
    org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder這個(gè)類,類似:

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

來生成密碼颓鲜,該工具類在spring-security-core包中有表窘,然后在users表中插入賬號密碼典予,賬號明文存儲,密碼則使用加密后的字符串存入乐严,然后在roles表中給對應(yīng)賬號插入ROLE_ADMIN瘤袖,則可以新建管理員賬號

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市昂验,隨后出現(xiàn)的幾起案子捂敌,更是在濱河造成了極大的恐慌,老刑警劉巖既琴,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件占婉,死亡現(xiàn)場離奇詭異,居然都是意外死亡甫恩,警方通過查閱死者的電腦和手機(jī)逆济,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磺箕,“玉大人奖慌,你說我怎么就攤上這事∷擅遥” “怎么了简僧?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雕欺。 經(jīng)常有香客問我岛马,道長,這世上最難降的妖魔是什么阅茶? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任菩混,我火速辦了婚禮阵谚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己害碾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布焦读。 她就那樣靜靜地躺著仓蛆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝌诡。 梳的紋絲不亂的頭發(fā)上溉贿,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機(jī)與錄音浦旱,去河邊找鬼宇色。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宣蠕。 我是一名探鬼主播例隆,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抢蚀!你這毒婦竟也來了镀层?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤皿曲,失蹤者是張志新(化名)和其女友劉穎唱逢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屋休,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坞古,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了博投。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绸贡。...
    茶點(diǎn)故事閱讀 40,928評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖毅哗,靈堂內(nèi)的尸體忽然破棺而出听怕,到底是詐尸還是另有隱情,我是刑警寧澤虑绵,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布尿瞭,位于F島的核電站,受9級特大地震影響翅睛,放射性物質(zhì)發(fā)生泄漏声搁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一捕发、第九天 我趴在偏房一處隱蔽的房頂上張望疏旨。 院中可真熱鬧,春花似錦扎酷、人聲如沸檐涝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谁榜。三九已至,卻和暖如春凡纳,著一層夾襖步出監(jiān)牢的瞬間窃植,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工荐糜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巷怜,地道東北人葛超。 一個(gè)月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像延塑,于是被迫代替她去往敵國和親巩掺。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容