
技术剖析
文章平均质量分 77
looook
这个作者很懒,什么都没留下…
展开
-
RPC框架性能PK,ServiceComb表现亮眼
我们通常看到每个RPC框架介绍时都宣称“高性能”,到底哪个框架性能更好,很难得到明确答案。因为不同框架一般都有特别适合自己的测试场景,在特定场景下性能表现突出,其实说明不了问题。为了相对准确评估不同框架性能,有网友做了一个性能基准测试,测试结果表明ServiceComb比大多主流服务框架有明显性能优势。测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s 每次运行前都会执行killall java, 但没有在每轮.原创 2020-10-19 20:21:25 · 1063 阅读 · 0 评论 -
服务网格与微服务SDK双模架构在华为云的实践
读者需具备基础:- 已对微服务有一定实践经验,使用过一种以上的微服务开发框架- 对 Service Mesh 有一定理解,知道他是什么,运作机制,可以通过我过去的分享来了解[Service Mesh 在华为公有云的实践](https://gitbook.cn/books/5a1e7dca387c5b4ee351790b/index.html)话题范围:- 不会讨论灰度发布,限流,熔断,负载均衡等微服务实现技术,这些 ServiceComb 全部都拥有- ServiceComb 包含微服务开发原创 2020-07-22 14:30:39 · 796 阅读 · 0 评论 -
使用ServiceComb开发微服务访问外网咋办?
代理设置作为一名开发者,在公司开发环境,可能是通过公司代理网络接入到因特网。如果调试服务时还必须依赖网上资源,比如直接连接共有云服务中心,那么就必须配置代理。配置方式,在 microservice.yaml 文件增加 proxy 配置:servicecomb: proxy: enable: true #是否开启代理 host: yourproxyaddress #代理地址 port: 80 #代理端口 u原创 2020-06-05 11:29:20 · 435 阅读 · 0 评论 -
基于ServiceComb实现微服务实例间多环境隔离
进行服务发现的时候,开发者需要了解本微服务能够发现那些其他服务的实例。ServiceComb提供了分层次的实例隔离。微服务实例分层管理要了解实例间的隔离层次,首先需要了解ServiceComb定义的一个体系完备的微服务系统结构:在微服务系统结构中,顶层是项目(project),项目中的应用分属于不同环境(environment),即测试和生产环境可以分开,每个环境下包含多个应用(application),在某个特定应用的特定环境中,包含多个微服务(service),一个微服务又可以同时.原创 2020-06-04 15:20:18 · 707 阅读 · 0 评论 -
使用OAS Validator帮助你规范OpenAPI Spec文档
当前主流的开发RESTful API的做法有两种:Code First和Contract First。Code First指先写代码,然后生成Contract,而Contract First则是先写Contract再写代码实现。两种做法各有利弊,Code First可以让开发人员先写接口实现,然后利用工具反向生成Contract,优点是快速开发,并能保证接口实现与Contrac...原创 2019-11-15 18:39:00 · 855 阅读 · 0 评论 -
Spring Cloud Gateway 、Zuul、EdgeService性能对比
关键字:网关,Zuul,Gateway,Spring Cloud, ServiceComb,Edge Service性能测试,微服务作者 | 李昂导读本文对几种流行的 API 网关以关键指标 RPS 为依据,利用 wrk 做出性能测评并且给出结论。本文所有使用的软件、命令、以及代码均在文中注明,以便读者搭建本地环境进行测试。注意性能测试的数据在不同的运行环境中差别较大,但总体上来...原创 2019-11-12 17:14:01 · 4807 阅读 · 0 评论 -
多云架构落地设计和实施方案
“不要把鸡蛋放在同一个篮子里”是一条知名的商业准则,在云平台选择上,很多公司也遵循这样的准则。基于多云平台构筑“业务中台”并不是一件简单的事情,需要构建一种快速继承、可持续迭代的路径,帮助整体方案落地。本文以实际项目案例为例,分析项目的架构设计、实施步骤,以及多云架构面临的挑战和机遇。总体思路不同云厂商提供的云服务不尽相同,相同的云服务在功能、性能上也会有或多或少的差异。...原创 2019-10-11 09:09:28 · 1015 阅读 · 0 评论 -
使用CSE/ServiceComb轻松实现接口访问控制
在[基于CSE的微服务架构实践-基础架构](https://bbs.huaweicloud.com/blogs/8bb2c3b8366c11e9bd5a7ca23e93a891)中,我们介绍了一个典型的微服务架构,如下图。采用这种架构的微服务,通常会碰到一个问题:用户管理服务提供了大量的REST接口供其他微服务访问,但是不期望外部用户通过网关访问这些接口。为了实现这个功能,很多开发框架要求...原创 2019-04-16 15:24:59 · 1560 阅读 · 0 评论 -
ServiceComb微服务升级实践
在使用ServiceComb时,大家关注最多的是微服务注册发现、高性能、服务治理和无状态等特性,其中无状态之后就可以随意起停,但是在运维时,我们发现并不是这么回事。因为如果直接杀掉进程、再重新启动,可能会有正在处理的事务,会导致业务报错,还有就是杀掉的进程并不会马上被调用端感知,调用端会出现大量的异常,即使配置重试、隔离机制,也只能减少一部分异常,所以在正常升级过程中,我们探寻如何零异常也是...原创 2019-04-09 17:41:27 · 1784 阅读 · 0 评论 -
基于CSE的微服务工程实践-以契约为中心
微服务架构有一个核心特征:采用REST进行通信。微服务之间通过网络进行通信,不通过共享文件、数据库、内存等方式进行通信。亚马逊最早引入微服务的时候,强制所有开发团队必须通过网络的方式开放服务能力,不允许任何其他方式进行能力开放。REST作为一种轻量级的网络通信方式,在微服务架构下被广泛采用。为了满足微服务团队之间的交流,OPENAPI Initiative制定了Open API标准,该标准综合...原创 2019-04-25 11:00:46 · 626 阅读 · 0 评论 -
【性能测试】压榨一下ServiceComb
ServiceComb性能测试前言本文以一个最简单的单consumer->单producer的测试场景为例,说明了如何在指定测试环境中,通过观察metrics统计数据,不断调整参数压榨出最大性能,。基本测试过程:测试驱动加大压力,TPS逐渐上升 驱动压力达到一定程度后,TPS不再上升,或是缓慢上升,甚至是下降,此时伴随着时延明显上升,称之为性能拐点 调整consumer/p...原创 2019-04-04 16:44:05 · 1371 阅读 · 2 评论 -
Spring Boot定义的REST接口使用CSE框架后报告404
定义了如下接口: 1 2 3 4 5 @GetMapping(path="/v1/user111/ping",produces=MediaType.APPLICATION_JSON_VALUE) Stringping111() { returnnull; } ...原创 2019-03-17 17:12:11 · 1044 阅读 · 0 评论 -
failed to findInstances, Micro-service does not exist 问题排查
调用一个微服务的时候报告如下错误:2019-02-2511:56:44.280WARN18556---[ntloop-thread-0]o.a.s.s.c.h.ServiceRegistryClientImpl:failedtofindInstances:{"errorCode":"400012","errorMessage":"Micro-servicedo...原创 2019-03-17 17:10:46 · 3194 阅读 · 0 评论 -
ServiceComb/CSE和Spring Cloud技术栈对比
当Spring Cloud和CSE都构建于Spring Boot基础之上的时候,可以方便地将基于Spring Cloud技术栈的应用迁移到CSE上来。上图中展示了CSE和Spring Cloud通常情况下的一种开发组合。实际上,CSE和Spring Cloud都提供了非常良好的扩展性,它们能够使用的组件都不是完全互斥的,而是可以相互融合使用。比如在配置更新下发方面,CSE可以通过实现archa...原创 2019-04-10 11:13:06 · 5343 阅读 · 0 评论 -
使用CSE SDK如何进行文件上传
文件上传下载的开发文档参考: *https://docs.servicecomb.io/java-chassis/zh_CN/general-development/file-upload.html *https://docs.servicecomb.io/java-chassis/zh_CN/general-development/file-download.html...原创 2019-03-17 17:09:27 · 1244 阅读 · 0 评论 -
transport-rest-servlet getParameter无法读取multipart/form-data中的普通参数
这是因为webcontainer(比如tomcat)只有在开启文件上传功能时才会去解析multipart/form-data的body体所以在没有开启文件上传功能时,multipart/form-databody中的普通参数也是无法读取的。CSE/ServiceComb中默认不开启文件上传功能,因为框架无法假设临时文件保存目录,最大文件大小限制等等参数,而这些参数的不当设置极可能...原创 2019-03-17 17:07:42 · 419 阅读 · 0 评论 -
使用CSE的RpcReference或者RestTemplate如何访问第三方应用?
CSE提供了RPC和RestTemplate两种方式访问服务端,提供了丰富一致的开发治理能力, 如果能够访问第三方就更加方便了。 CSE也提供了访问第三方的机制。 由于CSE访问服务端,需要事先知道契约, 而第三方没有契约; 另外一个问题是第三方的地址不是通过服务中心发现的。因此访问第三方需要解决如下几个问题:声明契约: 1 2 3 4 5 6...原创 2019-03-14 20:40:33 · 2947 阅读 · 0 评论 -
隔离/恢复配置错误率errorThresholdPercentage导致被隔离的实例很长时间无法恢复
问题现象:某产品使用CSE的隔离功能,并且配置了errorThresholdPercentage=15%。 在一次用户突发请求的过程中,由于一个服务(B)产生大量的超时,调用B的服务A触发了实例隔离。后来用户恢复了被隔离的服务B,但是服务A调用B仍然没有恢复,所有实例经过3个小时后,还是没有恢复。问题日志:2019-02-04 21:58:12.641 [jgw-getga...原创 2019-03-14 20:38:37 · 1768 阅读 · 2 评论 -
使用CSE/ServiceComb如何设置cookie
CSE主要提供了一个REST开发框架,没有像其他框架,比如tomcat等,将原生的HTTP接口公布出来,可以使用类似HttpServletResonse设置cookie。 那么CSE如何设置cookie了?具体有两种方式: 通过网关(比如edge service进行设置。)这个需要网关开发者在登录流程里面处理。 这里有个例子可以参考:https://github.com/huaweic...原创 2019-03-04 10:18:30 · 817 阅读 · 0 评论 -
CSE在脚本中指定服务监听地址
使用CSE开发时,都是通过microservice.yaml文件指定服务监听地址,比如: rest: address: 0.0.0.0:18083??sslEnabled=true但是使用0.0.0.0是监听所有网卡,在多网卡情况下,上报给服务中心地址就可能不正确,也可能有安全风险,所以我们应该在启动脚本中自动获取到ip地址,并设置给他,在这里我们可以通过环境变量的方式来传递。...原创 2019-03-04 10:17:03 · 553 阅读 · 0 评论 -
CSE/ServiceComb 版本号规则
CSE JAVA SDK使用service_description.version定义版本号, 目前推荐支持如下规则:x.y.z或者a.b.c.d其中x/y/z/a/b/c/d都是一个int值(short),不能超过2个字节(注意不是4个字节)的数字大小。关于版本规则的特殊说明CSE JAVA SDK的版本号必须采用数字,而不能使用字符等特殊字符。 因为这个版本号,不是传...原创 2019-03-04 10:13:05 · 1141 阅读 · 0 评论 -
CSE/ServiceComb如何使用openssl
CSE JAVA SDK使用vertx的HTTP实现,支持客户端TLS和服务端TLS。 使用openssl 加上配置项:ssl.engine: openssl即可。更多参考:场景描述用户通过简单的配置即可启用TLS通信,以保障数据的传输安全。外部服务通信配置与外部服务通信相关的配置写在microservice.yaml文件中。 服务中心、配置中心TLS通信配...原创 2019-03-04 10:10:22 · 1695 阅读 · 0 评论 -
合理设置servicecomb.rest.server.thread-count的值
很对开发者测试的时候,发现CSE SDK的CPU占用率很多时候只能够到1CPU,这是因为servicecomb.rest.server.thread-count默认值为1。 官网文档将这个配置项含义解释为“服务端线程数”(参考: https://docs.servicecomb.io/java-chassis/zh_CN/build-provider/protocol/rest-over-vert...原创 2019-02-22 20:11:27 · 999 阅读 · 0 评论 -
基于ServiceComb的分布式运维思路
本文介绍一种不同于微服务架构下通常的运维方式,这种方式能够更加简单、经济的解决一些常见的运维问题。举个例子。分析业务日志通常采用ELK方案,日志采集系统首先将微服务的日志集中,然后提供给搜索工具进行分析处理,最后通过界面呈现出来,这种方式是比较常见的集中式方式,集中式的好处是能够全局性的分析和处理数据。就错误定位这种场景,如果通过调用链等工具定界到具体的微服务,就不需要采集全局日志,只需要采集...原创 2019-05-07 09:04:31 · 492 阅读 · 0 评论 -
ServiceComb认证鉴权解决方案之ServiceComb-Fence
开发者可以使用 servicecomb-fence 给 servicecomb-java-chassis 微服务项目增加基于 OpenID Connect 的认证鉴权能力。认证鉴权流程介绍密码模式Client 输入用户名密码向 Authentication Server 请求 Token。** HTTP Request **POST http://localhost:9090/...原创 2019-05-27 14:29:06 · 1750 阅读 · 0 评论 -
ServiceComb EdgeService可以配合oauth2 使用吗
edge service 可以配合oauth2 使用吗,现在看来,oauth2的oauth/token 接口,无法生成契约所以,访问不到,这个请教一下怎么解决?这个问题稍微有些复杂,至少有两个过程需要解决:1.edge转发调往oauth2server的请求。由于oauth2server可能是采用第三方技术,比如springcloud开发的,这些服务不会生成契约,所有edges...原创 2019-06-19 17:03:15 · 715 阅读 · 0 评论 -
spring-cloud-huawei:在SpringCloud中使用ServiceComb的能力
Apache ServiceComb是什么?无论是 SOA,还是微服务架构;无论是平台化,还是中台战略,有一条原则始终都没有变过,那就是抽象,将公共的能力抽象出来,将最核心的研发人员投入到公共的服务、框架中,做到最稳定,以此来降低业务服务的复杂度,未来的趋势一定是,平台越来越厚重,业务越来越轻量级。微服务框架ServiceComb就是为此而生,将服务之间的通信、注册发现、服务...原创 2019-09-20 12:47:15 · 2619 阅读 · 0 评论 -
服务网格实践之servicecomb-mesher
一、service mesh(服务网格)1、 service mesh诞生背景自从微服务和云计算兴起后,诞生了无数优秀的微服务架构,给开发部署带来了巨大的便利,敏捷开发获得了最佳的实践场景。然而微服务模式带来便利和高性能的同时不可避免会带来服务数量的膨胀,处理链路复杂化,底层架构和微服务框架差异化,因此服务治理问题成为了新的痛点,为了解决以上场景,service m...原创 2019-09-30 18:07:00 · 2808 阅读 · 0 评论 -
Apache ServiceComb Meetup -Shanghai 2019 (PPT Download)
看回放直接戳https://hc2019.bizconf.cn/watch/ko4r1l7j即可北京时间2019年09月20日,Apache ServiceComb社区在中国上海世博中心举办的华为全链接大会组织了微服务同场活动 Apache ServiceComb Meetup,并圆满落下帷幕。本次活动邀请了Apache基金会主席、Apache孵化器项目管理委员会...原创 2019-09-24 20:24:48 · 304 阅读 · 0 评论 -
【大咖连载】实现SockShop的第一个服务
前言本章将介绍SockWorks团队,如何实现SockShop系统的第一个服务,并完成端到端的自动化测试、打包、部署及发布过程。实际上,从“0到1”的过程往往是具有很大挑战性的,所以团队在实现SockShop系统的第一个微服务时,也希望能将基础机制做扎实,形成可复制的DNA,以便于后续实现更多的微服务时,能作为有效的参考。10.1 使用Java Chassis实现商品服务...原创 2019-09-11 18:00:00 · 1261 阅读 · 0 评论 -
新特性解读 | Apache ServiceComb Pack 0.5.0发布
ServiceComb Pack 0.5.0 新功能介绍ServiceComb Pack 0.5.0 已经发布了, 在这个版本中我们有好几个重大更新,例如使用状态机来管理事务的执行状态, 新的Saga事务管理UI,以及Omega端的异步事务支持。大家可以在此查阅到详细的版本更新信息。为什么要使用状态机管理事务状态在ServiceComb Pack 中一个分布式事务是由多个相...原创 2019-08-30 18:58:00 · 707 阅读 · 0 评论 -
【大咖连载】微服务参考模型(适用性评估以及成熟度参考详情)
微服务实施参考模型(简称参考模型)是笔者基于过去实施微服务的经历,制定的微服务落地过程中的实践指南。微服务参考模型梳理了产品在微服务实施过程中的适用性评估、成熟度参考、度量体系以及能力提升计划,旨在帮助团队尽早识别微服务实施过程中的风险,并有效地推进微服务相关实践的落地。4.1 为什么需要参考模型为什么提出参考模型对于业务背景、系统复杂度、技术体系、团队规模不尽相同的团队...原创 2019-08-05 17:55:00 · 1025 阅读 · 0 评论 -
【大咖连载】微服务与Serverless
从单体应用到微服务,我们实现了业务的快速交付。微服务在帮助我们架构解耦的同时,也带来了很多新的挑战,比如运维成本的增加和部署自动化等挑战。即使使用云平台动态管理基础设施,我们仍然要面临如下现实问题: 基础设施的创建、配置、维护、安全,比如虚拟机的创建、配置,以及出现安全漏洞后对系统、软件的更新等。随着微服务数量增加,维护的基础设施的规模也对应膨胀,造成创建、配置、维护的困难,并带来安全...原创 2019-07-31 18:30:00 · 536 阅读 · 0 评论 -
【大咖连载】遗留系统改造策略
对遗留系统的改造,既要不影响业务,实现平滑、安全的过渡,又要保证能够高效、稳步地推进,这对于软件开发者来说是个不小的挑战。结合笔者的经验,在遗留系统改造过程中可以采取以下思路: 遵循“演进式改造流程”,优先改造最具价值的部分,并保证改造过程中的风险可控。 采用“绞杀者模式”,通过逐步替换而非一次性替换的方式,来保证新旧系统的平滑过渡。 采用“挎斗模式”,将不容易...原创 2019-08-13 09:01:48 · 800 阅读 · 0 评论 -
如何给微服务架构的项目做验收测试?
在验收测试阶段,基于微服务架构的应用相对于单体架构的应用而言,具有以下挑战: 复数的服务增加了测试环境搭建的难度 各种异常情况的模拟变得困难,基于 Mock的测试方式无法对整个调用链路作异常模拟,进而使得对整体架构的健壮性测试变得困难 基于成本和效率的原因,测试工作已经不适合通过人工完成 我们认为对基于微服务架构的应用,其验收测试应该具有以下特征: 自动化、可...原创 2019-07-29 09:41:04 · 545 阅读 · 0 评论 -
Apache ServiceComb Kie | 一个语义型配置中心
项目地址:https://github.com/apache/servicecomb-kie这次我想分享如何管理分布式应用系统中的配置项,我们的实践路程与遇到的问题。为什么要用配置中心我相信大家在开发的过程中,经常会遇到的问题是: 我有个新的特性,但是我需要对其进行控制,在必要时能将功能关闭或打开 链接数据库的线程池需要调整 访问某个目标的超时时间需要调...原创 2019-07-25 15:43:47 · 1673 阅读 · 0 评论 -
基于ServiceComb开发微服务如何解决跨域CORS问题
CORS机制概念阐述跨域资源共享(CORS, Cross-Origin Resource Sharing)允许Web服务器进行跨域访问控制,使浏览器可以更安全地进行跨域数据传输。场景描述当用户需要从浏览器上跨域发送REST请求时就有可能要用到CORS机制,接收跨域请求的微服务需要开启CORS支持。配置说明CORS功能在microservice.yaml文件中配置,配置项见下...原创 2019-07-25 20:35:03 · 1361 阅读 · 10 评论 -
华为service mesh使用指南-实现原理
Mesher集成了注册发现、负载均衡、熔断降级、路由管理、调用链等微服务功能,通过mesher,微服务开发不再依赖开发框架,用户可选择自己习惯的语言,以极低成本进行新的微服务开发,也可以零成本将旧应用微服务化。拓扑cse mesher调用拓扑图来如下,调用关系是:client->server1->server2。我们以server1为例进行分析。server1细节放...原创 2019-06-19 17:17:31 · 3543 阅读 · 0 评论 -
query参数值包含分号的时候,CSE/Servicecomb将其解析为两个参数
问题说明:有些URL的参数值包含逗号、分号,比如:http://host?param=1,2,3;4,5,6CSE解析的时候,将其解析为 param = 1,2,3 和 4,5,6= 两个参数。但是在Tomcat(比如spring boot运行时), 解析为一个参数 param = 1,2,3;4,5,6问题原因:早期HTTP服务器的实现,分号(;)和连接号(&...原创 2019-06-19 17:13:50 · 631 阅读 · 0 评论 -
CSE的REST接口存在重载的时候报错: OperationId must be unique
Exception in thread "main" java.lang.IllegalStateException: ServiceComb init failed.at org.apache.servicecomb.core.SCBEngine.init(SCBEngine.java:220)at org.apache.servicecomb.core.CseApplicationLi...原创 2019-06-19 17:23:16 · 1261 阅读 · 0 评论