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

举报
JaneConan 发表于 2019/03/17 14:23:24 2019/03/17
【摘要】 主要分享一下微服务day5的基本操作及关键点

序言

day4 看到有朋友写了

直达链接 

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


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

指令千万条,精准第一条

WechatIMG1060.jpeg

资源准备


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”


屏幕快照 2019-03-17 14.16.32.png


2、在“Goals”输入框中输入:clean package -X


屏幕快照 2019-03-17 14.21.43.png    

3、查看打好的包

屏幕快照 2019-03-17 14.22.58.png

附   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,启动服务。

屏幕快照 2019-03-17 14.28.01.png


跑啊跑.....

屏幕快照 2019-03-17 14.29.15.png


这时同时启动consumer和provider服务后


【通过consumer调用该provider服务的sayHello方法,此时返回的前缀是Hello】


屏幕快照 2019-03-17 16.08.10.png


然后在控制台用【Control + C】停止jar包的服务


3、 在jar包所在目录下放置一份microservice.yaml配置文件,内容如下

hello:
sayHelloPrefix: "Hello(from disk file)"

重新启动provider服务的jar包,此时得到的应答如下

屏幕快照 2019-03-17 16.12.45.png


然后在控制台用【Control + C】停止jar包的服务

4、 设置环境变量hello_sayHelloPrefix=Hello(fromEnv),再次启动服务

set hello_sayHelloPrefix=Hello(fromEnv)

嗯,然后在Mac上不认?

屏幕快照 2019-03-17 16.18.01.png


对,那是因为指令不对,【指令千万条,精准第一条】

Mac上设置环境变量,需要用

export hello_sayHelloPrefix=Hello(fromEnv)

但...

屏幕快照 2019-03-17 16.28.00.png

嘿嘿,还是感谢华为云老师但指点,少一个单引号号【'】

export hello_sayHelloPrefix='Hello(fromEnv)'

屏幕快照 2019-03-17 16.29.50.png

可以了,再次运行jar包


此时调用sayHello方法得到的应答如下


屏幕快照 2019-03-17 16.30.32.png


给配置项增加回调方法

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());
	  }	


屏幕快照 2019-03-17 16.40.53.png



2、 启动服务,在provider服务的动态配置页面增加hello.sayHelloPrefix的配置

我们在华为云但CSE管理控制台中进行配置


屏幕快照 2019-03-17 16.44.35.png屏幕快照 2019-03-17 16.44.05.png


添加新的配置信息

配置项
hello.sayHelloPrefix
值:

Hello(fromCC)

屏幕快照 2019-03-17 16.47.33.png


点击确定之前先确认【provider】服务在运行


屏幕快照 2019-03-17 16.49.16.png



provider服务实例从配置中心刷新配置项后,就会触发回调方法打印日志

屏幕快照 2019-03-17 16.55.16.png



启用和配置 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的内容合并到普通业务日志中输出。

点击下载icon_rar.gifconfig.zip


屏幕快照 2019-03-17 17.07.55.png


3、 启动服务,调用接口,可以看到日志中打印了accesslog

WechatIMG1061.jpeg

    附件下载

  • config.zip 1.27KB 下载次数:19
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。