写点什么

完整微服务化示例:使用 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:101318

评论

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

华为云CDN,助力中小企业提升用户体验

IT科技苏辞

南开大学团队采用全场景AI框架昇思MindSpore,打造“皮肤病大规模可信综合辅助诊断系统”

Geek_2d6073

什么样的技术,能让黄河开口说话?

白洞计划

作业2:微信朋友圈的高性能复杂度

白杨

欧盟森林砍伐法规和合规性:使用 Dimitra 技术解决森林砍伐问题

股市老人

华为云CDN节点扩增力度加大,构建全球智能边缘网络

爱尚科技

华为云CDN,助力电商平台无惧流量洪峰

IT科技苏辞

从全球顶级数据库大会 SIGMOD 看数据库发展趋势

NebulaGraph

数据库 图数据库 技术演变

华为云CDN为芒果TV加速,打造丝滑“追剧观综”的观看体验

爱尚科技

为什么说华为云CDN更值得选择?

爱尚科技

从零开始,开启属于你的 RTE 漫游之旅!丨漫游指南 x 即将启航

声网

音视频

阿里云斩获2022全球分布式云大会两项大奖

云布道师

阿里云

智能勘探 | AIRIOT智慧油田管理解决方案

AIRIOT

物联网 智慧油田

数据也能开口说话?这次汇报,老板疯狂给我点赞

图灵社区

数据分析 可视化 图表

为什么 APISIX Ingress 是比 Traefik 更好的选择?

API7.ai 技术团队

云原生 APISIX Ingress Controller Kubernetes Serverless

华为云CDN,为企业内容加速打开新局面!

IT科技苏辞

哈啰出行高质量故障复盘法:“3+5+3”(附模板)

TakinTalks稳定性社区

Wallys/MIMO/Industrial-grade/2x 2 900M high powerRadio /902-928Mhz/AR9223/ AR9582/AR9531/AR9344/

Cindy-wallys

数据治理:数据集成架构的演进

用友BIP

当 Amazon Lambda 遇上 Apache APISIX 可以擦出什么火花?

API7.ai 技术团队

微服务 AWS API Gateway APISIX 网关

以英雄之名为S9总决赛助攻!虎牙直播and华为云CDN,team work才会赢

爱尚科技

学习无代码开发工具有什么用?

间隔

微信小程序 无代码开发

我们是如何构建自己的可观测性的

观测云

云计算 可观测性 云服务 观测云

AI 训练加速原理解析与工程实践分享

Baidu AICLOUD

异构计算 云原生AI 百度百舸

Go Ubuntu 安装 gvm:Go 版本管理工具

非晓为骁

Go ubuntu 版本管理工具 gvm

华为云CDN通过全站加速引领网站性能全面优化

爱尚科技

天花板级别ZooKeeper+Dubbo笔记,通俗易懂,颠覆认知

小小怪下士

Java zookeeper dubbo

国产时序数据库TDengines学习调研及总结

李草凯

华为云CDN,为企业提供极致低时延用户体验

IT科技苏辞

【附下载】政企数智办公平台研究报告,何以数智化?

融云 RongCloud

数智化 百幄

数据也能开口说话?这次汇报,老板疯狂给我点赞

图灵教育

数据分析 可视化 图表

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