春风十里,不如你~
点击蓝字,关注我们~
tánɡ 棠 lí 梨 jiān 煎 xuě 雪 青鲤来时遥闻春溪声声碎 嗅得手植棠梨初发轻黄蕊 待小暑悄过 新梨渐垂 来邀东邻女伴撷果缓缓归 旧岁采得枝头细雪 今朝飘落胭脂梨叶 轻挼草色二三入卷 细呷春酒淡始觉甜 |
Apache ServiceComb | 精选
文章的开头引用了一首歌词,恰到好处地形容了美丽的春天。在这个充满浪漫气息的时节,小蜜蜂大家带来新一期的精选动态~
Apache ServiceComb 致力于帮助企业、用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理。
进展动态
1. 《Apache ServiceComb微服务开发课程》在传智播客官网上线
2. Apache ServiceComb&传智汇meetup3月23日在北京举办
--------------------------------------
社区小伙伴分享参与社区经验、使用微服务的实践及现场微服务开发演练
FAQ精选问答
Q1
cse和servicecomb有什么区别?升级版?
A1
从开发SDK的角度,可以认为servicecomb是cse的子集。 但是cse只是包含了一些涉及到安全相关的没开源的模块,供华为云接入使用的。 所以开发上是没有差异的。 当然CSE是华为的一个产品,除了开发SDK,还有很多配套的工具和平台,这些在云上才能使用。
Q2
有关于微服务之间调用的Demo吗?
A2
你可以浏览下java-chassis官网,Demo和samples目录有很多例子
也可以参考以下网站↓↓↓
https://github.com/huaweicse/cse-java-chassis-samples/tree/master/porter
Q3
实现saga的是servicecomb的一个子项目吗?
A3
是的。servicecomb-pack 项目实现了saga 协议。 pack由两部分组成,其中alpha是独立部署的协调服务,omega是集成到自己应用中的包负责和alpha通信↓↓↓
https://github.com/apache/servicecomb-pack/blob/master/README_ZH.md这里有个关于servicecomb-pack项目的介绍。
Q4
edgeservice的最大连接数的参数是?
A4
参考:https://docs.servicecomb.io/java-chassis/zh_CN/transports/rest-over-vertx.html 当中的“的表1-1 -REST over Vertx配置项说明”-“极限连接数计算”
配置项:servicecomb.rest.server.connection-limit
默认值:Integer.MAX_VALUE
Q5
config-server如何集成?
A5
不过配置中心当前没有开放出来,有两个选择:
1.下载华为云上的“本地轻量化微服务引擎”↓
https://console.huaweicloud.com/cse/?region=cn-south-1#/cse/tools,里面有ConfigCenter
2.使用apollo↓
<groupId>org.apache.servicecomb</groupId>
<artifactId>config-apollo</artifactId>
参考↓↓↓:
https://docs.servicecomb.io/java-chassis/zh_CN/config/general-config.html
“配置中心(动态配置)”
Q6
请问ServiceCenter集群内数据同步,集群之间数据同步的,后面有新的规划么?
A6
service-center 有 Aggregate 做了同步的支持,具体可以查看官方的介绍↓↓↓
https://github.com/apache/servicecomb-service-center/blob/master/docs/multidcs.md
由于Aggregate的功能还不够完善,目前正在筹划更加全面和完善的同步方案,将在最近推送到github上,如果有兴趣的话可以关注service-center的github仓库。
Q7
请问java-chassis的snapshot仓库地址是?
A7
https://repository.apache.org/content/repositories/snapshots/
这里有个maven配置的例子↓↓↓
https://github.com/apache/servicecomb-java-chassis/blob/master/README.md#get-the-latest-snapshot
Q8
上传文件@RequestParam("file") MultipartFile uploadfile 报错,格式不正确,大家有碰到过没?
org.apache.servicecomb.swagger.invocation.exception.InvocationException: InvocationException: code=400;msg=CommonExceptionData [message=Parameter is not valid.]
at org.apache.servicecomb.common.rest.codec.RestCodec.restToArgs(RestCodec.java:72) ~[common-rest-1.1.0.B031.jar:1.1.0.B031]
at org.apache.servicecomb.common.rest.filter.inner.ServerRestArgsFilter.afterReceiveRequest(ServerRestArgsFilter.java:60) ~[common-rest-1.1.0.B031.jar:1.1.0.B031]
at org.apache.servicecomb.common.rest.AbstractRestInvocation.prepareInvoke(AbstractRestInvocation.java:226) [common-rest-1.1.0.B031.jar:1.1.0.B031]
at org.apache.servicecomb.common.rest.AbstractRestInvocation.invoke(AbstractRestInvocation.java:206) [common-rest-1.1.0.B031.jar:1.1.0.B031]
at org.apache.servicecomb.common.rest.AbstractRestInvocation.runOnExecutor(AbstractRestInvocation.java:196) [common-rest-1.1.0.B031.jar:1.1.0.B031]
at org.apache.servicecomb.common.rest.AbstractRestInvocation.lambda$scheduleInvocation$0(AbstractRestInvocation.java:159) [common-rest-1.1.0.B031.jar:1.1.0.B031]
...
2019-03-22 11:37:35.815 ERROR 177128 --- [pool-2-thread-5] o.a.s.common.rest.codec.RestCodec : Parameter is not valid for operation fuxi-vehicle.com.fx.vehicle.web.SimResource.verifySims. Message is cause:InvocationException,message:InvocationException: code=400;msg=CommonExceptionData [message=Parameter is required.].
2019-03-22 11:37:35.816 ERROR 177128 --- [pool-2-thread-5] o.a.s.c.rest.AbstractRestInvocation : unknown rest exception.
org.apache.servicecomb.swagger.invocation.exception.InvocationException: InvocationException: code=400;msg=CommonExceptionData [message=Parameter is not valid.]
at org.apache.servicecomb.common.rest.codec.RestCodec.restToArgs(RestCodec.java:72) ~[common-rest-1.1.0.B031.jar:1.1.0.B0
A8
接口声明错误了
不应该用 @RequestParam 注解,应该用@requestpart 注解
请参考链接:
https://docs.servicecomb.io/java-chassis/zh_CN/general-development/file-upload.html
Q9
大神能告知servicecenter所有接口定义在哪可以看呢?
A9
https://github.com/apache/servicecomb-service-center/blob/master/server/core/swagger/v4.yaml
sc的开源代码库有yaml格式的
https://support.huaweicloud.com/api-cse/cse_02_0003.html
华为云官网的文档也有说明
Q10
请问一下,edge service 有没有关于转发请求头的配置。现在的问题是, 在Head 里面的叫Authorization 的参数,到Edgeservice 的dispatch 里面就没了。
A10
是转发给三方服务还是基于servicecomb的服务?如果是dispatcher,是不会丢失的。如果是servicecomb的服务,是会丢失的,servicecomb只转发在“契约”(接口定义)里面显示声明的参数。
如果期望edge传递一些控制消息,需要通过Context来传递,即edge把header读取出来,放到Context里面。
这里的例子演示了怎么传递权限信息给微服务:
https://github.com/huaweicse/cse-java-chassis-samples/tree/7de5dbbcfae46865966140eecdb3dad43c85f2b4/porter
Q11
报错:
InvocationException: code=490;msg=CommonExceptionData [message=Cse Internal Bad Request]
at org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory.doCreate(ExceptionFactory.java:79)
at org.
490是接口参数没有找到么?
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: default
现在是我在本地环境用本地注册中心没有问题,放到服务器,用云的注册中心, 就会报这个问题。
A11
没找到服务实例。可以通过find instance搜索下,是否查找到调用的微服务实例。
如果为0的话,就看看被调用服务是否正常启动和注册。 调用者是否拼错了服务名称或者应用名称等。
Q12
麻烦问下,一个服务如果起了两个实例,但是版本号不一样,通过CSE去访问的时候是怎么个策略啊?
A12
请参考↓↓↓
https://docs.servicecomb.io/java-chassis/zh_CN/build-consumer/common-configuration.html
“指定目标实例的版本规则”
Q13
rpc方式调用微服务的时候,碰到了个关于environment的问题,provider和consumer得都在同一种开发模式下,才调用成功;当consumer不指定environment的时候,就没法调用了,也不知道为啥?
A13
你可以通过以下网址↓↓↓
https://bbs.huaweicloud.com/forum/thread-11095-1-1.html
了解ServiceComb支持多环境隔离的概念。
感觉大家有些项目是把spring mvc的应用切换为cse, 这里有两个重要的差异信息文档说明:
1. spring mvc的说明,参考末尾:
https://docs.servicecomb.io/java-chassis/zh_CN/build-provider/springmvc.html
2. spring boot集成cse和自带mvc的原理介绍: https://bbs.huaweicloud.com/blogs/eca98a6f399a11e9bd5a7ca23e93a891
可以了解下,少走些弯路。 因为spring mvc除了支持REST,还支持界面,CSE不支持, 在微服务架构上有个建议方案,关于界面程序如何部署的介绍:
https://bbs.huaweicloud.com/blogs/8bb2c3b8366c11e9bd5a7ca23e93a891
对于ServiceComb java-chassis和CSE JAVA SDK的差异说明↓↓↓
https://bbs.huaweicloud.com/blogs/6d66caf643b211e9bd5a7ca23e93a891 可以参考。
关于Saga↓↓↓
http://servicecomb.apache.org/cn/docs/distributed-transaction-of-services-1/
http://servicecomb.apache.org/cn/docs/distributed-transaction-of-services-2
这两篇文章有相关的原理和实现的介绍。
欢迎大家在ServiceComb讨论群
或者gitter聊天室与我们互动
https://gitter.im/ServiceCombUsers/Lobby
saga聊天室
↓↓↓
https://gitter.im/ServiceCombUsers/Saga
精彩活动回顾ServiceComb携传智揭秘微服务项目
架构师微服务讲解 现场演示操作【北京,2019年3月23日】
华为开源软件能力中心企业应用微服务化工程师马彬老师等技术专家现场揭秘ServiceComb的来龙去脉和设计思想;深入解读服务中心及微服务开发框架的架构和关键技术;分享应用案例、展望未来,从多维度带来干货满满的精彩技术与实践分享。
文/末/小/结
我们专注于开源
更希望有更多爱好者学习到微服务
同时也欢迎大家加入到我们的开发队伍
为我们贡献代码,成为commiter
欢迎扫码加入进微信群
有什么疑问可以私聊小助手哈
∇∇∇
期待志同道合的朋友们加入
ServiceComb的大门为你们敞开~
--------------------------------
用心做开源,不忘初衷
了解更多信息请访问:
官方网站↓↓↓
http://servicecomb.apache.org/
Github代码仓库↓↓↓
https://github.com/apache?q=ServiceComb
点击完“在看“再走吧~
戳“阅读原文”阅读相关源码
并给ServiceComb点个“Star”吧