2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

评论

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

开发一个免费App,都可以用哪些工具?

FinFish

APP开发 小程序容器 小程序转app 小程序技术

NFTScan 与蚂蚁数科旗下 ZAN 达成战略合作

NFT Research

节点 NFT\ NFTScan #Web3

直播预约丨《实时湖仓实践五讲》第五讲:实时湖仓领域的最佳实践解析

袋鼠云数栈

大数据 数据湖 直播 湖仓一体 实时湖仓

系统内存测试工具 Micromat Lifespan激活最新版

胖墩儿不胖y

Mac软件 系统检测工具

DAPP算力云矿机系统开发丨源码技术搭建

l8l259l3365

Kyligence 发布数据和分析领域垂直大模型司南(Compass)

Kyligence

数据分析 司南大模型

好用的时间任务管理:Omnifocus 4激活中文最新版

胖墩儿不胖y

Mac软件 任务管理器

网络安全事件频发现状

尚思卓越

网络安全

2024年完整湖北等保测评机构名单看这里!

行云管家

湖北 等级保护 等保测评

小红书、抖音社交媒体如何实现电商流程管理自动化

RestCloud

零代码 社交媒体 APPlink

分布式基础概念-消息中间件[RocketMQ]

派大星

RocketMQ 消息中间件 Java 面试题

打卡智能中国(七):AI的小城故事

脑极体

AI

万字长文,我对FinOps落地的思考

Geek_cd6rkj

云原生 后端 降本增效 成本治理 kubernetes 运维

【B/S架构】医院不良事件报告系统源码

源码星辰

玩转Sermant开发,开发者能力机制解析

华为云开发者联盟

开发 开发工具 华为云 华为云开发者联盟

读《重构-改善既有代码的设计》的一些思考

air

读书 软件开发 重构

测试编排技术:实战前置接口响应数据引用

Apifox

测试 自动化测试 接口测试 测试工具 测试自动化

如何基于jmx exporter监控java应用

蝉翼2u

Prometheus CloudNative 现代监控系统 jmx exporter

十问ByteHouse:如何基于ClickHouse玩转向量检索?

字节跳动数据平台

数据库 大数据 云原生

积极办理等保测评,保证企业网络安全!

行云管家

网络安全 等保 等级保护 等保测评

2023年“中国高校计算机大赛-人工智能创意赛”总决赛获奖名单公示

飞桨PaddlePaddle

人工智能 深度学习 开发者 高校 计算机大赛

云图说丨初识华为云DDoS防护AAD——DDoS攻击防护平台

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 华为云云图说

GitHub 如何修改 Fork from

HoneyMoose

光纤怎么接入网呢?

小齐写代码

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