写点什么

完整微服务化示例:使用 Apache ServiceComb 进行微服务开发、容器化、弹性伸缩(二)

  • 2019-12-25
  • 本文字数:1783 字

    阅读完需:约 6 分钟

完整微服务化示例:使用 Apache ServiceComb 进行微服务开发、容器化、弹性伸缩(二)

技工 (Worker)

因为技工最为简单,对其他部门人员依赖最少,我们首先搭建这个部门。

黄金分割运算服务

技工的主要工作是提供黄金分割数列计算服务,当用户需要知道第 n 个黄金分割数时,技工以最快的速度计算出数值并返回给用户。我们可以把这个工作简化为如下数学方程:


value = fibo(n)
复制代码


在暂时不考虑性能的情况下,我们可以迅速实现黄金分割数列的计算。



interface FibonacciService { long term(int n);}

@Serviceclass FibonacciServiceImpl implements FibonacciService { @Override public long term(int n) { if (n == 0) { return 0; } else if (n == 1) { return 1; }

return term(n - 1) + term(n - 2); }}

复制代码

技工服务端点

黄金分割数量运算已经实现,现在我们需要将服务提供给用户,首先我们定义端点接口:



public interface FibonacciEndpoint { long term(int n);}

复制代码


引入 ServiceComb 依赖:



<dependency> <groupId>org.apache.servicecomb</groupId> <artifactId>spring-boot-starter-provider</artifactId></dependency>

复制代码


接下来我们同时暴露黄金分割运算服务的 Restful 和 RPC 端点:


@RestSchema(schemaId = "fibonacciRestEndpoint")@RequestMapping("/fibonacci")@Controllerpublic class FibonacciRestEndpoint implements FibonacciEndpoint {
private final FibonacciService fibonacciService;
@Autowired FibonacciRestEndpoint(FibonacciService fibonacciService) { this.fibonacciService = fibonacciService; }
@Override @RequestMapping(value = "/term", method = RequestMethod.GET) @ResponseBody public long term(int n) { return fibonacciService.term(n); }}
@RpcSchema(schemaId = "fibonacciRpcEndpoint")public class FibonacciRpcEndpoint implements FibonacciEndpoint {
private final FibonacciService fibonacciService;
@Autowired public FibonacciRpcEndpoint(FibonacciService fibonacciService) { this.fibonacciService = fibonacciService; }
@Override public long term(int n) { return fibonacciService.term(n); }}
复制代码


这里用 @RestSchema 和 @RpcSchema 注释两个端点后,ServiceComb 会自动生成对应的服务端点契约,根据如下 microsevice.yaml 配置端点端口,并将契约和服务一起注册到 Service Center(https://github.com/apache/servicecomb-service-center):


# all interconnected microservices must belong to an application wth the same IDAPPLICATION_ID: companyservice_description:# name of the declaring microservice  name: worker  version: 0.0.1# service center addresscse:  service:    registry:      address: http://sc.servicecomb.io:30100  highway:    address: 0.0.0.0:7070  rest:    address: 0.0.0.0:8080

复制代码


最后,提供技工服务应用启动入口,并加上 @EnableServiceComb 注释启用 ServiceComb :


@SpringBootApplication@EnableServiceCombpublic class WorkerApplication {
public static void main(String[] args) { SpringApplication.run(WorkerApplication.class, args); }}


复制代码

告示栏 (Bulletin Board)

告示栏提供为门卫、技工和养蜂人注册联系方式的设施,同时经理和养蜂人可通过此设施查询注册方的联系方式,以方便匹配能力的提供和消费。


Service Center 提供契约和服务注册、发现功能,而且校验服务提供方和消费方的契约是否匹配,我们可以下载(https://github.com/apache/servicecomb-service-center/releases)编译好的版本直接运行。


本文转载自微服务蜂巢公众号。


原文链接:https://mp.weixin.qq.com/s?__biz=MzUxNTEwNTg5Mg==&mid=2247488670&idx=1&sn=7556990599cea8e0fd80ed54b9f39026&chksm=f9bae195cecd688332940d0b296909e8130d828104c36c20f49d76d43561f626eae24bd0c1ef&scene=0&xtrack=1&key=17fbc717c1803f309d535a4bdbc0f9c0d8d2089a5c7e455df8c0a5e6d824a6534b8476d2ad151cd45ed10eb7a15577914596444e867d96f615c277fc05fe951cef48de8b7d0732dcb4bc74f5c0e2f95a&ascene=14&uin=MTI5MjAyNjcyMQ%3D%3D&devicetype=Windows+10&version=62070158&lang=zh_CN&exportkey=AfH3CzqE%2F1ENttvg815y9Uo%3D&pass_ticket=oGcazNeaRfkuszcDU0L7jpfeTFZ3%2FULBAbPnhurUkiyW7DLvBVsoC%2Fh5OWX1zIsH


2019-12-25 18:101492

评论

发布
暂无评论
发现更多内容

中国联通联合openGauss开源社区启动数据库自主创新

深度揭秘openGauss分区表如何实现大数据量的快速转移

技术干货 | WebRTC 技术解析之 Android VDM

网易云信

Java android 音视频 VDM

开源demo| anyRTC 互动白板发布,助力实时互动场景

anyRTC开发者

音视频 在线教育 视频会议 智慧协同 开源demo

程序员非常实用的十个工具网站,值得收藏

AlwaysBeta

使用JDBC进行openGauss的读写分离及负载均衡

神州新桥正式加入openGauss社区

一周信创舆情观察(2021.12.27~2022.1.3)

统小信uos

技术说|拓维·建木边缘计算平台,让算力先行一步

拓维信息

云计算 大数据 边缘计算

深入理解虚拟化

极客重生

云计算 容器 虚拟机 调度 资源隔离

加密货币、去中心化金融和交易的演变:一种交易成本方法

CECBC

数字人民币app公开上架应用市场 试点区域外用户暂无法使用

CECBC

新思科技:2022年软件安全行业七大趋势预测

InfoQ_434670063458

新思科技 2022 安全趋势

青藤:省心又省钱!安全运营服务正在成为甲方企业的主流选择

青藤云安全

恒源云(GPUSHARE)_字节跳动的mRASP预训练模型真香

恒源云

字节跳动 机器翻译 语音识别

AI开发平台系列1:AI开发平台“家族”概览

Baihai IDP

人工智能 ide AI 平台

小声嘟囔:char 和 unsigned char 有那么大差距吗?

BUG侦探

c ios 汇编 ios开发

openGauss数据库源码解析系列文章——存储引擎源码解析(一)

openGauss Summit 2021你想知道的都在这!

中国电信发布运营商行业首个云原生关系型数据库TeleDB for openGauss

openGauss 2021 感谢有您,一起创造了那些灿烂记忆

廖湘科:数据库需要充分利用开源和发展开源,广泛吸纳全产业力量

从GitHub 到极狐GitLab 的迁移指南

极狐GitLab

GitHub 极狐GitLab 迁移指南

05 Prometheus之监控主机和容器

穿过生命散发芬芳

Prometheus 1月月更

云计算厂商们,你们辜负了中国的用户

观测观测

云原生 云计算架构师

多IOT设备上跑物联网应用,你也可以

Speedoooo

物联网 IoT ios开发 Andriod开发

LabVIEW图像模式匹配(基础篇—11)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像模式匹配

GBASE南大通用加入openGauss社区

共话数据库技术与行业数字化融合创新,探讨开源数据库未来发展

Linux之find命令的参数详解

CRMEB

龙蜥实验室来了!收下这份指南,秒级体验 Anolis OS

OpenAnolis小助手

国产操作系统 龙蜥社区

完整微服务化示例:使用 Apache ServiceComb 进行微服务开发、容器化、弹性伸缩(二)_语言 & 开发_ServiceComb_InfoQ精选文章