21天转型服务】day5实操手册 or '\n' !!!指令千万条,精准第一条!!!

网友投稿 484 2022-05-30

【21天转型微服务】day5实操手册 or '\n' !!!指令千万条,精准第一条!!!

序言

day4 看到有朋友写了

直达链接

https://bbs.huaweicloud.com/blogs/5fac241847a511e9bd5a7ca23e93a891

那让我们一起来看看今天的痛点吧~

指令千万条,精准第一条

资源准备

Demo下载:

点击下载Demo-Day5.zip

点击下载Demo-Day5-Homework.zip

一、还原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

附件: config.zip 1.27KB 下载次数:19次

华为云APP 微服务引擎 CSE 微服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:利用memaslap对Memcached进行性能测试
下一篇:步步莲花--Scrum团队敏捷需求实战案例
相关文章