本地服务启动慢问题及dubbo测试方法记录
文章目錄
- @[toc]
- tips
- 1: 關(guān)于服務(wù)啟動(dòng)慢的問題
- 2: 兩種本地測試dubbo思路
- 第一種(推薦使用)
- 第二種 (太繁瑣而且有代碼侵入, 不建議使用)
- 安裝zk服務(wù)( 本地安裝 )
- Mac安裝
- Windows安裝
- 安裝zk服務(wù)( 基于docker 推薦使用方式 )
- Mac安裝
- Windows安裝
- 倉庫加速
- docker常用命令
- 本地啟動(dòng)dubbo服務(wù) (service 為例)
- 使用jmeter調(diào)用dubbo接口
- step1 安裝(解壓后)
- step2 安裝插件
- step3 啟動(dòng)jmeter
- step4 添加配置調(diào)用本地接口
- dubbo接口invoke常用參數(shù)demo
- @[toc]
- tips
- 1: 關(guān)于服務(wù)啟動(dòng)慢的問題
- 2: 兩種本地測試dubbo思路
- 第一種(推薦使用)
- 第二種 (太繁瑣而且有代碼侵入, 不建議使用)
- 安裝zk服務(wù)( 本地安裝 )
- Mac安裝
- Windows安裝
- 安裝zk服務(wù)( 基于docker 推薦使用方式 )
- Mac安裝
- Windows安裝
- 倉庫加速
- docker常用命令
- 本地啟動(dòng)dubbo服務(wù) (service 為例)
- 使用jmeter調(diào)用dubbo接口
- step1 安裝(解壓后)
- step2 安裝插件
- step3 啟動(dòng)jmeter
- step4 添加配置調(diào)用本地接口
- dubbo接口invoke常用參數(shù)demo
tips
1: 關(guān)于服務(wù)啟動(dòng)慢的問題
hosts文件內(nèi)添加行
127.0.0.1 ${hostname}::1 ${hostname}可以一定程度上提升一些速度(自身感覺還是相對(duì)明顯的, 原來需要大概2分鐘靠上,現(xiàn)在基本在40秒左右)
正常時(shí)間應(yīng)該會(huì)下面截圖的時(shí)間長(下圖時(shí)間為 只消費(fèi)不注冊 的情況下)
2: 兩種本地測試dubbo思路
# 第一種 服務(wù)端只消費(fèi)不注冊, 消費(fèi)端指定消費(fèi)本地服務(wù) 優(yōu)點(diǎn): 使用簡單且無侵入;# 第二種 服務(wù)端將服務(wù)注冊到本地, 如需遠(yuǎn)程服務(wù)支持需指定遠(yuǎn)端服務(wù)地址, 然后使用jmeter調(diào)用 優(yōu)點(diǎn): 單項(xiàng)目即可測試;缺點(diǎn): 有代碼侵入; 依賴本地zk; 配置及構(gòu)建參數(shù)繁瑣;第一種(推薦使用)
以 PC 端接口調(diào) project中 IntegralService為例 ( integralService 內(nèi)會(huì)調(diào)用其他三方的dubbo服務(wù) )
即: webapp:student:pc => project:service:IntegralService => otherDubboService
# step1: project 項(xiàng)目中的改動(dòng)1.添加測試依賴 testCompile 'com.kooup:koo-k12-test:1.0.0'2.測試包下啟動(dòng)項(xiàng)目(直接debug main 方法即可)public class DubboTestStart {public static void main(String[] args) throws Exception{System.setProperty("java.net.preferIPv4Stack", "true");//配置文件可按需調(diào)整ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath*:app_config/koo-k12-service-app.xml","classpath*:dubbo_config/common.xml","classpath*:dubbo_config/koo-k12-service-dubbo.xml","classpath*:app_config/integral-rocketmq-app.xml","classpath*:app_config/im-mq-app.xml"});context.start();System.out.println(" >>>> Provider started.");System.in.read();}}# step2: pc (或者其他webapp項(xiàng)目)1.添加本地配置(在當(dāng)前用戶目錄下添加文件, 也可手動(dòng)指定文件目錄,jetty啟動(dòng)無效后續(xù)再確認(rèn)問題)#/Users/yakuiguo/dubbo-resolve.properties (端口號(hào)可查看dubbo.properties:dubbo.protocol.port=20059)com.kooup.k12.integral.service.IntegralService=dubbo://localhost:20059 # step3: 啟動(dòng)1.完成以上步驟即可啟動(dòng)項(xiàng)目,進(jìn)行本地測試用 -Ddubbo.resolve.file 指定映射文件路徑,此配置優(yōu)先級(jí)高于dubbo:reference中的配置
1.0.15及以上版本支持2.0以上版本自動(dòng)加載${user.home}/dubbo-resolve.properties文件,不需要配置
/*** com.kooup:koo-k12-test:1.0.0 jar包內(nèi)所做事情*/ @Slf4j @Component public class DubboTestService implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof RegistryConfig) {RegistryConfig registryConfig = (RegistryConfig) bean;String address = registryConfig.getAddress();if (StringUtils.isNotBlank(address) && (address.contains("127.0.0.1") || address.contains("localhost"))) {// 如果是注冊到本地zk 則不處理log.warn(" >>>>> dubbo服務(wù)將被注冊到 address: {}", address);}else {registryConfig.setRegister(false);log.warn(" >>>>> 設(shè)置registryConfig.register=false, 服務(wù)啟動(dòng)將不會(huì)注冊服務(wù)到遠(yuǎn)程zk, address: {}", address);}}return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {return bean;} }
第二種 (太繁瑣而且有代碼侵入, 不建議使用)
本地啟動(dòng)zk服務(wù), 并將服務(wù)注冊到本地zk。
安裝zk服務(wù)( 本地安裝 )
官網(wǎng): https://zookeeper.apache.org/
Apache mirrors: https://www.apache.org/dyn/closer.cgi/zookeeper/
Mac安裝
# 直接解壓即可 # 常用命令 ./bin/zkServer.sh start //啟動(dòng)服務(wù) ./bin/zkServer.sh status //查看狀態(tài) ./bin/zkServer.sh stop //停止服務(wù)./bin/zkCli.sh //啟動(dòng)客戶端 ./bin/zkCli.sh -timeout 50000 -server 127.0.0.1:2181 //啟動(dòng)客戶端時(shí)指定服務(wù)地址及超時(shí)時(shí)間Windows安裝
https://www.cnblogs.com/xiohao/p/9717364.html
安裝zk服務(wù)( 基于docker 推薦使用方式 )
Mac安裝
https://www.jianshu.com/p/f1a777109e66
Windows安裝
https://blog.csdn.net/qq_41723615/article/details/92799469
倉庫加速
可用加速地址 http://f1361db2.m.daocloud.io(也可自行注冊 https://account.daocloud.io/signup )
docker常用命令
# 基礎(chǔ)命令 docker search zookeeper //搜索zookeeper相關(guān)的鏡像 docker pull zookeeper //根據(jù)鏡像名稱獲取鏡像到本地 docker images //查看本地鏡像 docker ps //查看本地已啟動(dòng)實(shí)例 參數(shù): -a (查看本地所有實(shí)例)# 創(chuàng)建并啟動(dòng)一個(gè)zookeeper實(shí)例 (映射到本地2181端口) docker run -d -p 2181:2181 --name zk --privileged zookeeper# 啟動(dòng)關(guān)閉已有實(shí)例 docker start zk //啟動(dòng) zk為實(shí)例名稱, 也可以使用容器id docker stop zk //關(guān)閉 docker logs -f zks //滾動(dòng)查看日志 (-t 時(shí)間戳, --since 30m 30分鐘內(nèi)的日志)# 進(jìn)入到實(shí)例內(nèi)部 docker exec -it zk /bin/bash本地啟動(dòng)dubbo服務(wù) (service 為例)
# 項(xiàng)目配置# 注冊服務(wù)到本地zk#file: service/src/main/resources/dubbo_config/koo-k12-service-dubbo.xml1.<dubbo:registry address="zookeeper://127.0.0.1:2181" check="false" /># 配置依賴服務(wù)1.添加本地配置(在當(dāng)前用戶目錄下添加文件, 也可手動(dòng)指定文件目錄,jetty啟動(dòng)無效后續(xù)再確認(rèn)問題)#/Users/yakuiguo/dubbo-resolve.properties (ip+端口 查看: https://dubbomonitor.trunk.koolearn.com/#/serviceDetail?service=com.kooup.k12.integral.service.IntegralService&app=kooup-dubbo-service)com.koolearn.credit.engine.service.ICreditActionService=dubbo://10.155.10.163:20059使用jmeter調(diào)用dubbo接口
jmeter
官網(wǎng): https://jmeter.apache.org/
下載: https://jmeter.apache.org/download_jmeter.cgi
插件
Git地址: https://github.com/thubbo/jmeter-plugins-for-apache-dubbo
現(xiàn)成jar: http://note.youdao.com/noteshare?id=940a4e215f7721b1e8291ea8492d4dc0
step1 安裝(解壓后)
step2 安裝插件
step3 啟動(dòng)jmeter
step4 添加配置調(diào)用本地接口
3.1
3.2
3.3
3.4
3.5
dubbo接口invoke常用參數(shù)demo
# telnet host port telnet 127.0.0.1 20063# invoke 基礎(chǔ)參數(shù) invoke com.kooup.***.IK12PreviewTaskBizService.test(13568, "447904", false)# 包含對(duì)象 {"class": "當(dāng)前對(duì)象的全限定名", "key": "value" ... } invoke com.kooup.***.IK12PreviewTaskBizService.test({"userName": "測試用戶", "class": "com.kooup.user.param.User"})# 包含枚舉 {"class": "當(dāng)前枚舉的全限定名", "name": "value"} 其中name為固定key, value為枚舉的標(biāo)識(shí) invoke com.kooup.***.IK12PreviewTaskBizService.test({"name": "OPEN_SUCCESS", "class": "com.kooup.enums.TestEnum"})# 包含list使用數(shù)組即可 [1, 2] (元素類型對(duì)應(yīng)參數(shù)類型即可) invoke com.kooup.***.IK12PreviewTaskBizService.test([1, 2])總結(jié)
以上是生活随笔為你收集整理的本地服务启动慢问题及dubbo测试方法记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地理必修一三大类岩石_高中地理必修一知识
- 下一篇: J2ME概念解析