初见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阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容