【21天转型微服务】day5实操手册<br /> or '\n' !!!指令千万条,精准第一条!!!
【摘要】 主要分享一下微服务day5的基本操作及关键点
序言
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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
jean_chan2019/03/17 14:56:021楼编辑删除举报
[ERROR] The specified user settings file does not exist: F:\21bigdata\Demo-Day2-Homework\helloworld-provider
BitM2019/03/17 15:04:552楼编辑删除举报
yhs00922019/03/18 09:37:50编辑删除举报
如果优先级最高的配置文件在可写磁盘目录里,那么文件就输出出去了。但如果是在jar包等不可写位置,就会打印这么一行日志。
建议你去看看ServiceComb-Java-Chassis,也就是CSEJavaSDK开源部分的代码,来了解一下 : )
木子10032021/05/08 04:47:17编辑删除举报