Q:用Postman测试接口可以调通过,swagger-ui页面测试我的接口经常出现

connect: connection timed out.

A:确认下frontend跟你的应用网络是否通,servicecomb的swagger-ui现在是proxy模式,不是直连

Q:准备使用servercomb,下载了center和demo项目,demo项目一直提示

ERROR 9868 --- [ntloop-thread-0] o.a.s.s.client.http.RestUtils ......message: Connection timed out

求指点

A:

1.httpaddr/httpport of your service center conf

2.service registry address in your microservice.yaml

Q:restschema与rpcschema两种方式在性能上有区别吗?

A:Rpc要比Rest的性能高。

http://zhibo.huaweicloud.com/?referVisitorId=oiOYo0XLXIVOMO-ACc9q2cKXGOFQ&c=activity&a=live&id=151108&from=timeline&isappinstalled=0

这里视频有说明性能比较数据

Q:在bmi例子上做修改,报下面这个错,怎么解决啊?

Caused by: java.lang.IllegalStateException: The schema(id=[calculatorRestEndpoint]) content held by this instance and the service center is different.
You need to increment microservice version before deploying. Or you can configure service_description.environment=development to work in development environment and ignore this error 

A:这通常是因为你修改了REST接口定义,但是既没有升级微服务版本号,也没有把环境配置成开发环境,所以ServiceComb启动实例检查契约的时候发现契约内容不一致,就报错了。

可以考虑升级一下微服务版本号,或者在microservice.yaml文件里面配置一下service_description.environment=development,或者等sc里面的服务实例下线后,把微服务信息删掉重新注册。

Q:有谁知道吗?除了注解方式@RequestHeader,还有什么方法可以在Controller中拿到request中的header参数?目前测试发现HttpServletRequest没法拿到

A:如果这个Header参数定义在了你的接口契约里,那你的REST接口方法能直接拿到header参数。否则可以扩展一个HttpServerFilter从requestEx参数里面拿header,也可以在你的REST接口里面加上HttpServletRequest参数,从里面拿到header

Q:如何将一个服务部署多个,实现自动减压的?是在配置文件上设置,还是使用其他工具实现。给个链接谢谢。

A:https://docs.servicecomb.io/java-chassis/zh_CN/references-handlers/loadbalance.html

Q:The Service pv-web's instance 62d30daeed5011e8af2f00e081ba3ef7 has been isolated for a while, give a single test opportunity. org.apache.servicecomb.loadbalance.filter.IsolationDiscoveryFilter.allowVisit(IsolationDiscoveryFilter.java:119)?

A:你贴出来的日志表示pv-web服务的某个实例被隔离了,现在已经经过了一段时间,Java-Chassis框架在尝试将一个请求路由到该实例,看看它能否被调通,如果调通了的话,这个实例就会从隔离状态恢复过来。

https://docs.servicecomb.io/java-chassis/zh_CN/references-handlers/loadbalance.html 请参考这篇文档的“实例隔离功能”。

Q:启动ServiceComb-java-chassis项目 sample/codefirst-sample 目录里的 CodeFirstProviderMain,例子程序怎么启动不起来?

Caused by: java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.MethodUtils.getMethodsWithAnnotation(Ljava/lang/Class;Ljava/lang/Class;ZZ)[Ljava/lang/reflect/Method;at org.apache.servicecomb.foundation.common.event.SimpleEventBus.collectSubscribers(SimpleEventBus.java:41)at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)at org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx.computeIfAbsent(ConcurrentHashMapEx.java:56)at org.apache.servicecomb.foundation.common.event.SimpleEventBus.register(SimpleEventBus.java:51)at org.apache.servicecomb.serviceregistry.task.AbstractTask.<init>(AbstractTask.java:38)at org.apache.servicecomb.serviceregistry.task.AbstractRegisterTask.<init>(AbstractRegisterTask.java:28)at org.apache.servicecomb.serviceregistry.task.MicroserviceRegisterTask.<init>(MicroserviceRegisterTask.java:47)at org.apache.servicecomb.serviceregistry.task.MicroserviceServiceCenterTask.<init>(MicroserviceServiceCenterTask.java:28)at org.apache.servicecomb.serviceregistry.registry.AbstractServiceRegistry.createServiceCenterTask(AbstractServiceRegistry.java:201)at org.apache.servicecomb.serviceregistry.registry.AbstractServiceRegistry.init(AbstractServiceRegistry.java:106)at org.apache.servicecomb.serviceregistry.registry.RemoteServiceRegistry.init(RemoteServiceRegistry.java:54)at org.apache.servicecomb.serviceregistry.RegistryUtils.init(RegistryUtils.java:66)at org.apache.servicecomb.core.CseApplicationListener.setApplicationContext(CseApplicationListener.java:48)at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:121)at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:97)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1622)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.d**ateBean(AbstractAutowireCapableBeanFactory.java:555)... 13 more

A:用户本地工程的lang3包没有更新到ServiceComb配套的版本,解决方法:

1.在用户本地工程的pom.xml点击鼠标右键,选择执行 maven -> reimport

2.在用户本地工程的pom.xml点击鼠标右键,选择执行 maven -> Show effective pom,确认其中的lang3是:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.6</version>
</dependency>

Q:ServiceComb配置中心支持“配置更新后自动刷新到服务”,如果服务有多个节点,是如何实现的?想来如果是API调用刷新不能确定刷到每个节点,是否cse client端有消息流和配置中心连接呢?类似于企业总线。如果是消息总线,那么业务服务里,需要配置消息总线的url等信息吗?   

A:微服务需要配置中心地址。定期pull配置,或者建立websocket链接采用push机制

Q:在 ServiceComb-CRM-WorkShop 例子中 边缘服务afterReceiveRequest方法 在调用

String userName = template.getForObject("cse://"+USER_SERVICE_NAME + "/validate?token={token}", String.class, token)

时候,第一次调用正常后边调用会出现阻塞线程问题,报错:

Thread Thread[transport-vert.x-eventloop-thread-4,5,main] has been blocked for 5433 ms, time limit is 2000

A:ServiceComb的Edge Service默认工作于高性能的reactive模式,此模式要求工作于Edge Service转发流程中的业务代码不能有任何的阻塞操作

。该问题是由于用户业务模型无法满足reactive要求,因此,可以通过修改微服务的配置文件,使用ServiceComb提供的同步线程池模式解决。

使用指南可以参考:https://docs.servicecomb.io/java-chassis/zh_CN/edge/by-servicecomb-sdk.html

Q:spring mvc项目中实现的filter,切换到微服务后,全部不起作用了,是不支持springmvc里边的filter了吗?

用户工程同时添加了springboot和provider-springmvc的依赖:

<dependency><groupId>org.apache.servicecomb</groupId><artifactId>spring-boot-starter-provider</artifactId>
</dependency><!-- springmvc支持 -->
<dependency><groupId>org.apache.servicecomb</groupId><artifactId>provider-springmvc</artifactId>
</dependency>

A:问题原因是因为springmvc和ServiceComb REST是两套不同架构,用户将基于springmvc的项目切换到ServiceComb后,还需要基于ServiceComb REST规则对老的filter做微调,ServiceComb提供相关的架构迁移案例,详情可以参考:

1.不同框架之间迁移改造可能工作量的评估指南:https://bbs.huaweicloud.com/blogs/ba7b62178cb811e89fc57ca23e93a89f 可以参考下

2.在Spring Boot中使用ServiceComb:https://huaweicse.github.io/cse-java-chassis-doc/using-cse-in-spring-boot/using-cse-in-spring-boot.html

Q:ServiceComb支持thymeleaf吗?

A:这个是个web框架,需要在web容器里面运行,其实和servicecomb是两个完全独立的东西了。servicecomb也支持在web容器里面运行,理论上两个都可以放到一起跑,但我们没用过这个框架。  https://docs.servicecomb.io/java-chassis/zh_CN/build-provider/protocol/rest-over-servlet.html

Q:原来的那些过滤器都失效了,怎么做才可以既保持原有的能力,又可以把需要发布的接口通过@RestSchema申明出去?

A:因为是两个不同的运行时,涉及到“框架内部机制”,而不仅仅是“形式”上的东西。

结合功能,一般都有对应的解决方案的。

附上一个简单的不同框架之间迁移改造可能工作量的评估指南:https://bbs.huaweicloud.com/blogs/ba7b62178cb811e89fc57ca23e93a89f 可以参考。

Q:群里有人压过 servicecomb 同步restful 和 spring boot的restful的差距吗?

A:网上有很多对比分析,我们也有测试过。一般标准的虚拟机4u8g,差不多分别是5万单位和1万单位。servicecomb restful和其它rpc框架,比如grpc,dubbo,tars等在一个差不多的水准,即5万单位。和调优方式,测试方法不同,会有一些偏差。

Q:蓝云上安装了mysql,启动alpha的jar包,直接跑saga源码里的saga-servicecomb-demo,能成功体验事务,照着saga源码里的saga-servicecomb-demo写了个一模一样的工程,是springboot接入servicecomb,调用却出了问题,子事务那边报空指针异常,globalTxId,parentTxId都为null, localTxId有值;自己没找出原因,谁了解这块的帮个忙看下吧,代码地址是:https://github.com/weichao666/sagademo

A:saga demo的那个问题解决了,如果使用java chassis1.0.0版本,需要引入guava20.0版本,否则启动报错,注解和调用链正确配置的情况下,使用java chassis1.1.0-SNAPSHOT版本是没问题的,java chassis1.0.0版本使用的guava是19.0

Q:ServiceComb中的同步 restful 需要特殊配置吗?

A:除edge service之外,ServiceComb的restful默认都是同步的,不需要特殊配置。

今天的FAQ精选问题总计20个,可以手动收藏一下哦~

Apache ServiceComb社区常见问题解答问答精选(第一期)相关推荐

  1. Apache ServiceComb 社区12月动态精选

    点击蓝字关注这个神奇的公众号- Apache ServiceComb | 精选 Apache ServiceComb 致力于帮助企业.用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运 ...

  2. Apache ServiceComb 社区3月动态精选

    春风十里,不如你~ 点击蓝字,关注我们~ tánɡ 棠 lí 梨 jiān 煎 xuě 雪 青鲤来时遥闻春溪声声碎 嗅得手植棠梨初发轻黄蕊 待小暑悄过 新梨渐垂 来邀东邻女伴撷果缓缓归 旧岁采得枝头细 ...

  3. Apache ServiceComb 社区11月动态精选

    点击蓝字关注这个神奇的公众号- Apache ServiceComb | 精选 Apache ServiceComb 致力于帮助企业.用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运 ...

  4. Apache ServiceComb 社区4月动态精选

    你好,四月 我说 你是人间的四月天: 笑响点亮了四面风: 轻灵在春的光艳中交舞着变 你是四月早天里的云烟: 黄昏吹着风的软,星子在无意中闪: 细雨点洒在花前 ...... 你是一树一树的花开, 是燕在 ...

  5. 如何加入微服务 Apache ServiceComb 社区

    2019独角兽企业重金招聘Python工程师标准>>> 如何加入 微服务 Apache ServiceComb 开源社区 本文转载自 微服务 Apache SerivceComb ( ...

  6. Apache APISIX 社区成员助力 openEuler 发布第一个社区创新版

    来自 Apache APISIX 社区的罗泽轩和温铭在 openEuler 9 月 30 日发布的第一个社区创新版(21.09)中,为 OpenResty 迁移工作中做了非常多的贡献,让 OpenRe ...

  7. 官方更新:基于VRA Tokenomics 社区常见问题解答

    您好 Verasity 社区, 我们最近通过 Medium 发布了最新的代币经济学,您可以在此处阅读. 我们引入了一些新概念来促进我们作为产品的增长,例如我们的企业收购基金,我们还澄清了我们的流通和总 ...

  8. 一起读Apache ServiceComb

    喜欢我,就点个Star吧~ https://github.com/apache?q=servicecomb 入门必读: 必读1:首个Apache微服务顶级项目毕业 必读2:致微服务开发者的一封信(一周 ...

  9. 如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计

    2019独角兽企业重金招聘Python工程师标准>>> 写在前面 开源微服务框架 Apache ServiceComb 的前身为华为云的 微服务引擎 CSE (Cloud Servi ...

最新文章

  1. linux下yum的搭建(redhat5)
  2. 认知理论与技术(hash函数,SHA,MD
  3. vivo 2019:关于企业文化如何影响手机企业发展的三个追问
  4. Unity整合TortoiseSVN
  5. Echarts笔记-折线图定制(Y轴百分数,鼠标移动显示百分数,显示X轴,Y轴值)
  6. 43 WM配置-作业-库存盘点-定义每种存储类型的类型
  7. python 微服务框架_Python微服务架构chili_chicken
  8. POJ 1703 Find them, Catch them 并查集
  9. Excel 查找函数
  10. shfileoperation C#无法读源文件或磁盘XP系统1026错误
  11. 傻瓜式自制鼠标光标,超简单
  12. 阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
  13. 表白生日祝福和3D表白相册
  14. svn: E155019: Can't upgrade as it is not a pre-1.7 work解决办法
  15. 深度学习-聊天机器人
  16. SVG中年月日相关的表达式
  17. 查看Linux的核数和内存等相关系统配置
  18. 网易云音乐(一)爬取全部歌手及歌手id
  19. 编程题-翻棋游戏-枚举
  20. 项目记录——为沙特客户Android开发Google地图应用

热门文章

  1. 我是一只IT小小鸟里面牛人的博客
  2. Python调用R出现“UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2” 问题
  3. JVM调优专题-JVM调优参数
  4. Win11 22H2怎么退回之前版本?Win11回滚Win10系统教程(三种方法)
  5. attribute与parameter区别
  6. WarGame bandit
  7. MTK平台关于Metadata当中Size的配置
  8. 10KV空压机继电保护定值设定
  9. 搭建自己的简易服务器(公网)
  10. 电商后台系统产品逻辑全解析