51b1874d8f9901fe50acb1874f8a17a8.gif 2b1d380cae3a4d230bc3ad9ec1a167d0.png

你好,四月

我说 你是人间的四月天;

笑响点亮了四面风;

轻灵在春的光艳中交舞着变

你是四月早天里的云烟;

黄昏吹着风的软,星子在无意中闪;

细雨点洒在花前

......

你是一树一树的花开,

是燕在梁间呢喃,——你是爱,是暖,

是希望,你是人间的四月天~

Apache ServiceComb | 精选

林徽因执笔轻吟“你是爱,是暖,你是人间四月天”的倾世锦句,古来文人墨客无不对四月充满了浪漫的情怀,我亦钟爱四月天。

在这温暖的季节里,小蜜蜂给大家带来新一期的精选动态~

Apache ServiceComb 致力于帮助企业、用户和开发者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理。

fefd204bc448fa79d220e55be2943e3d.png

4ec25b4bfc2e5705afaf9b8fec7b0427.png

进展动态

3aafd849292b5b08dd3460cd7dbd5c26.gif 关于新特性版本发布

ServiceCenter 1.2.0 发布

http://mirrors.gigenet.com/apache/servicecomb/servicecomb-service-center/1.2.0/

java-chassis 1.2.0发布

http://apache.mirrors.hoobly.com/servicecomb/servicecomb-java-chassis/1.2.0/

ServiceComb Pack 0.4.0 发布

http://mirrors.ibiblio.org/apache/servicecomb/servicecomb-pack/0.4.0/

欢迎大家使用,提出宝贵意见。

fefd204bc448fa79d220e55be2943e3d.png

FAQ| 精选问答

Q1

cse-dependency-spring-boot2 这个包在哪个仓库?

A:包都在maven仓库,可参考如下网址的案例进行配置:

https://huaweicse.github.io/cse-java-chassis-doc/

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q2

--- [ice Center Task] o.a.s.s.consumer.MicroserviceVersions: Failed to setInstances, appId=****-stg, microserviceName=f*****.java.lang.NullPointerException: null

swagger 报错,服务启动失败。

A: 问题已经解决,用户定义了一个类,里面没有定义任何RESTful operation。这个问题在1.2.0已经做了规避,但是定义这样的空实现类仍然是没有意义的,不建议这样做。

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q3

1.2.0的java-chassis-dependencies,底层是springBoot2.0以上版本?还是沿用的1.5.12?

A:不再是固定的,各业务按自己的场景,选择不同的依赖。

ServiceComb可以在不同的spring boot版本下运行,支持spring boot1,和spring boot2的例子可以参考:

https://github.com/apache/servicecomb-samples/tree/master/dependency_management

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q4

ServiceComb能写异步代码吗?在哪个demo中有例子?

A:

例1:asyncQuery是reactive查询redis的例子

https://github.com/apache/servicecomb-java-chassis/blob/master/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/Impl.java

例2:runAsyncConsumers是reactive发起调用的例子

https://github.com/apache/servicecomb-java-chassis/blob/master/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfConsumer.java

详情请参考文档:

https://docs.servicecomb.io/java-chassis/zh_CN/general-development/reactive.html

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q5

在本地调试的时候,调用其他微服务会报找不到实例的错误,但在注册中心明明看得到的,这是什么原因?

A:检查下application ID,environment是否相同.通常都是“隔离域”不同的原因导致的。可以通过如下案例↓↓↓

1. “如何进行微服务的多环境开发部署”

https://bbs.huaweicloud.com/forum/thread-11095-1-1.html

2."微服务接口兼容常见问题"

https://docs.servicecomb.io/java-chassis/zh_CN/question-and-answer/interface-compatibility.html

了解更多ServiceComb的“隔离域”及其应用场景。

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q6

现网A服务调用B接口,且都是双实例。如果版本升级时契约变更了,B微服务的版本号升级一个版本,在b服务已经升级但a还未升级完成时,a服务能调用到新的b的服务的接口吗?会不会引起调用失败?

A:

a是普通consumer:

  可以调到b新实例中的旧接口,但是不会调到b新实例中的新接口

  如果接口升级是兼容的,则不会出错,可以追加参数,不可以在中间插参数

a是edge:

  则新、旧接口都可以中转给后端

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q7

问下:rest://192.168.1.1:8080  支持对https的接口调用吗?endpoints 支持配置为域名吗?

A:

servicecomb:  rest:    address: 0.0.0.0:8080?sslEnabled=true

可以的。但是需要区分监听地址和外部访问的发布地址。 https://docs.servicecomb.io/java-chassis/zh_CN/build-provider/listen-address-and-publish-address.html

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q8

请教一个问题,我想请求验证码图片,java方法返回类型使用byte[] 时,content-type 却是application/json,页面展示一串字符,有办法修改这个content-type吗?

使用如下配置,接口调用报错:

@ResponseBody@RequestMapping(value = "/captcha.jpg", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)@ApiResponses({@ApiResponse(code = 200, response = File.class, message = ""),})

A:↓请参考以下文档↓

https://docs.servicecomb.io/java-chassis/zh_CN/general-development/file-download.html

如果是展示为图片,不是下载,则HttpHeaders.CONTENT_DISPOSITION设为inline

最好不要用parent的模式,不好处理版本冲突,统一使用dm引入

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q9

javachassis1.2.0 默认是基于springboot2打包的吗?

A:java-chassis不基于springboot,但是可以与springboot配合使用↓↓↓

https://github.com/apache/servicecomb-samples/tree/master/dependency_management 

spring 4, 5, spring boot 1, 2都可以集成。 1.2.0更加简单了 

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q10

开发者, servicecenter有带frontend的docker镜像提供吗?

A:https://hub.docker.com/r/servicecomb/scfrontend

6aeaff8c3db18cf7b2d2c34bb4866fb8.png

Q11

网关对请求转发的时候,怎么实现跨应用访问?我现在用的是zuul。

A:zuul的处理过程稍微复杂点。大概思路应该是首选被调用服务要先设置为允许跨应用调用,然后zuul的Discovery接口实现通过applicationid:miscroservicename去查找对应的微服务,能找到实例即可。  

跨应用调用请参考以下文档↓↓↓

https://docs.servicecomb.io/java-chassis/zh_CN/general-development/cross-app-invocation.html  

4ec25b4bfc2e5705afaf9b8fec7b0427.png

FAQ总结

1.现有接口返回类型是Optional的时候初始化失败,除了改接口返回类型之外还有没有什么解决方案?

将要发布1.2.1,会增加这个特性

2.关于使用inspector 在线测试微服务接口的时候,如果微服务设置了servlet.urlPattern,swagger 生成的url会少了一级路径,导致404

将要发布1.2.1,会解决这个问题

fefd204bc448fa79d220e55be2943e3d.png

f85b1b0239d10f60ed34cf4288ba7e8e.gif

精彩回顾

314abdbbda16f9055434c1b9ae8936ec.png

1.2019年中国开源盛事 KubeCon & CloudNativeCon & OSS 上海峰会 Co-located Event Apache ServiceComb Meetup 

2.华为云微服务应用平台(ServiceStage)作为业界微服务平台典型代表最终顺利通过。大会上,华为云架构师Hill和Apache ServiceComb 项目VP Willam Jiang被受聘为云原生产业联盟技术委员会专家。

原文链接?↓↓↓

https://www.huaweicloud.com/news/2019/0425093238050.html?from=groupmessage&isappinstalled=0

0a1bc6c7313e33b46f99869f69313527.gif

活动预告

e0abc4997fd73837a691b1ea0418cca2.png

END

458efc9316671bfc5ca6852935ccb28c.png

我们专注于开源

更希望有更多爱好者学习到微服务

同时也欢迎大家加入到我们的开发队伍

为我们贡献代码,成为commiter

欢迎扫码加入进微信群

有什么疑问可以提issue到github上

我们会及时为你解答~

小蜜蜂提前祝大伙儿五一快乐!?

096927369197e93ba6132ea7b2982a15.png

82c32686c1207c3e21daf0ff832e4dc3.png

期待志同道合的你

用心做开源/不忘初衷

了解更多信息请访问:

官方网站↓↓↓

 http://servicecomb.apache.org/ 

Github代码仓库↓↓↓

 https://github.com/apache?q=ServiceComb 

9e84d8498bc110cb5cfd63119586f211.png 在看点这里 a3a0b2dbb8dffd8b4a252452811bf2d2.gif e5821c41207c0d225a6ea5d8d613aba4.png

并给ServiceComb点个“Star”吧

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐