【21天转型微服务】day5实操手册<br /> or '\n' !!!指令千万条,精准第一条!!!
序言
day4 看到有朋友写了
https://bbs.huaweicloud.com/blogs/5fac241847a511e9bd5a7ca23e93a891
那让我们一起来看看今天的痛点吧~
指令千万条,精准第一条
资源准备
Demo下载:
一、还原Maven项目
这里提示大家用Demo-Day5.zip自己改
点击下载Demo-Day5.zip
如何还原已经说过多次了,请参考之前的分享
二、在Eclipse中执行mvn clean package(痛点分享)
验证微服务配置优先级关系
首先确保自己的工程已经还原,可运行,并且改过了在provider服务的pom文件
就是指导手册中的【在provider服务的pom文件中加上复制依赖包和打可执行jar包的插件配置】
[执行mvn clean package,在target目录下可以看到打好的jar包和对应的lib目录。实际
部署到执行环境的时候需要把jar包和lib目录同时复制过去。]
这句,不少朋友看到后,云里雾里
咱们可以在eclipse中实现
1、在Maven项目或者pom.xml上右键——>Run As ——>“Maven Build...”或者Run Configuration——>“Maven Build”
2、在“Goals”输入框中输入:clean package -X
3、查看打好的包
附 mvn命令若干:
mvn -h,不会用时,可寻求帮助。
mvn clean compile,将.java类编译为.class文件;
mvn clean test, 执行单元测试。
本质上,还是执行了一个完整的生命周期,
clean:clean, resources:resources, compiler:compile, resources:testResources, compiler:testCompile
mvn clean package,进行打包。
mvn clean install –Dmaven.test.skip
mvn clean install,将某jar包安装到maven本地仓库中。
mvn archetype:generate,快速的搭建项目骨架,输入一些groupId/artifactId/version等信息,由mvn插件自动生成一些必要的依赖和项目骨架。
打包完成之后
在命令行中执行java –jar helloworld-provider-0.0.1-SNAPSHOT.jar,启动服务。
跑啊跑.....
这时同时启动consumer和provider服务后
【通过consumer调用该provider服务的sayHello方法,此时返回的前缀是Hello】
然后在控制台用【Control + C】停止jar包的服务
3、 在jar包所在目录下放置一份microservice.yaml配置文件,内容如下
hello: sayHelloPrefix: "Hello(from disk file)"
重新启动provider服务的jar包,此时得到的应答如下
然后在控制台用【Control + C】停止jar包的服务
4、 设置环境变量hello_sayHelloPrefix=Hello(fromEnv),再次启动服务
set hello_sayHelloPrefix=Hello(fromEnv)
嗯,然后在Mac上不认?
对,那是因为指令不对,【指令千万条,精准第一条】
Mac上设置环境变量,需要用
export hello_sayHelloPrefix=Hello(fromEnv)
但...
嘿嘿,还是感谢华为云老师但指点,少一个单引号号【'】
export hello_sayHelloPrefix='Hello(fromEnv)'
可以了,再次运行jar包
此时调用sayHello方法得到的应答如下
给配置项增加回调方法
1、在provider服务的HelloService类中增加一个sayHelloPrefix配置项的回调,使其在配置项被刷新时打印一行日志
别忘了加import引用
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
private static final Logger LOGGER = LoggerFactory.getLogger(HelloService.class); private DynamicStringProperty sayHelloPrefix = DynamicPropertyFactory .getInstance().getStringProperty("hello.sayHelloPrefix", "" , notifyConfigRefreshed()); private Runnable notifyConfigRefreshed() { return () -> LOGGER.info("config[hello.sayHelloPrefix] changed to [{}]!", sayHelloPrefix.getValue()); }
2、 启动服务,在provider服务的动态配置页面增加hello.sayHelloPrefix的配置
我们在华为云但CSE管理控制台中进行配置
添加新的配置信息
配置项 hello.sayHelloPrefix
值: Hello(fromCC)
点击确定之前先确认【provider】服务在运行
待provider服务实例从配置中心刷新配置项后,就会触发回调方法打印日志
启用和配置 accesslog
1、 开启accesslog功能
这个地址是说明
Accesslog功能的说明文档
https://docs.servicecomb.io/java-chassis/zh_CN/build-provider/access-log-configuration.html
开启accesslog需要在microservice.yaml文件中做如下配置(这里使用了自定义的日志格式,没有用默认配置):
注意是在provider服务工程中但microservice.yaml文件
2、 配置accesslog日志打印配置
默认的accesslog是单独打印到一个access.log日志文件中的。这里我们为了实验观察的方便,
在provider项目的resources/config目录下放置一份log4j.properties配置文件,覆盖默认的配置,令accesslog的内容合并到普通业务日志中输出。
点击下载config.zip
3、 启动服务,调用接口,可以看到日志中打印了accesslog
- 点赞
- 收藏
- 关注作者
评论(0)