Spring Cloud Alibaba 相关事项

Mars 2020年04月30日 56次浏览
  • nacos在deepin使用官方命令启动报错,更换命令
bash -f ./startup.sh -m standalone
  • nacos使用mysql8
    1) 修改源代码,未采用(麻烦)
    2) 加入mysql插件,issues#2042有详细说明,具体步骤如下
    	//按照官方在/conf/application.properties加入mysql配置
    	spring.datasource.platform=mysql
    	db.num=1
    	db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&aut	oReconnect=true&useSSL=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
    	db.user=root
    	db.password=qwer1234	
    
    • 随后创建插件文件夹,并下载mysql驱动插件
          $ cd nacos
    	# 创建插件目录
    	$ mkdir -p plugins/mysql
    	# 下载 MySQL 8.X JDBC 驱动
    	$ cd plugins/mysql
    	$ wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar
    
    • 我的mysql是docker启动的,而nacos是解压缩命令启动的,在url中使用localhost解析host会出错,所以我使用的db.url.0=jdbc:mysql://192.168.0.103:3306/nacos
    • 最后执行 bash -f ./startup.sh -m standalone 或者 ./startup.sh -m standalone 启动nacos即可
  • nacos消费者启动,访问nacos注册中心的服务,报错,显示未知 unknow ip
    1)进入nacos控制台,找到注册的服务,点击详情,发现服务注册的ip为内网ip
    2)因此,消费者找不到对应得服务提供者
    3解决方法:可以在服务提供者中增加网卡配置,不使用nacos自动获取网卡信息
    
    • 服务端bootstrap中增加指定网卡配置
    spring:
      cloud:
        nacos:
          discovery:
    #        固定ip,不让nacos自动获取,一般nacos自动是拿eth0地址,端口可以自动嗅探,也可以进行配置
            ip: 注册中心能访问的ip,如我的外网ip47.96.158.120
    
    • 其余相关配置可自行选择,如下,具体可以查看cloud alibab文档
    # 如果选择固定Ip注册可以配置
    spring.cloud.nacos.discovery.ip = 10.2.11.11
    spring.cloud.nacos.discovery.port = 9090
    
    # 如果选择固定网卡配置项
    spring.cloud.nacos.discovery.networkInterface = eth0
    
    # 如果想更丰富的选择,可以使用spring cloud 的工具 InetUtils进行配置
    # 具体说明可以自行检索: https://github.com/spring-cloud/spring- 
    cloud-commons/blob/master/docs/src/main/asciidoc/spring-cloud-commons.adoc
    spring.cloud.inetutils.default-hostname
    spring.cloud.inetutils.default-ip-address
    spring.cloud.inetutils.ignored-interfaces[0]=eth0   # 忽略网卡,eth0
    spring.cloud.inetutils.ignored-interfaces=eth.*     # 忽略网卡,eth.*,正则表达式
    spring.cloud.inetutils.preferred-networks=10.34.12  # 选择符合前缀的IP作为服务注册IP
    spring.cloud.inetutils.timeout-seconds
    spring.cloud.inetutils.use-only-site-local-interfaces
    
    ################################更多配置########################
    
    spring.cloud.nacos.discovery.server-addr  #Nacos Server 启动监听的ip地址和端口
    spring.cloud.nacos.discovery.service  #给当前的服务命名
    spring.cloud.nacos.discovery.weight  #取值范围 1 到 100,数值越大,权重越大
    spring.cloud.nacos.discovery.network-interface #当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
    spring.cloud.nacos.discovery.ip  # 优先级最高
    spring.cloud.nacos.discovery.port  # 默认情况下不用配置,会自动探测
    spring.cloud.nacos.discovery.namespace # 常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
    
    spring.cloud.nacos.discovery.access-key  # 当要上阿里云时,阿里云上面的一个云账号名
    spring.cloud.nacos.discovery.secret-key # 当要上阿里云时,阿里云上面的一个云账号密码
    spring.cloud.nacos.discovery.metadata    #使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息
    spring.cloud.nacos.discovery.log-name   # 日志文件名
    spring.cloud.nacos.discovery.enpoint   # 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
    ribbon.nacos.enabled  # 是否集成Ribbon 默认为true
    
  • cloud alibaba的open feign 在调用服务方总是超时(我的服务有大量图片上传)
    #设置feign 客户端超时时间(openFeign默认支持ribbon)
    ribbon:
    #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
    ReadTimeout: 5000
    #指的是建立连接后从服务器读取到可用资源所用的时间
    ConnectTimeout: 5000