写点什么

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

评论

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

基于DolphinScheduler抽取通用EventBus组件:支持延迟与事件驱动

白鲸开源

开源 技术分享 Apache DolphinScheduler EventBus 任务调度平台

《数据治理与AI的双向赋能:从理论到实践》

极客天地

时序数据库 TDengine × Superset:开源界的时序可视化黄金组合

TDengine

tdengine 时序数据库 数据库·

MCP Server On FC之旅2: 从0到1-MCP Server市场构建与存量OpenAPI转MCP Server

阿里巴巴云原生

阿里云 云原生 函数计算

为什么说MES越早上越好,8个问题带你读懂MES生产管理!

积木链小链

数字化转型 智能制造

风靡全网的《羊了个羊》,其实可以用几百行代码复刻?

不惑

CodeBuddy首席试玩官

奥睿科(ORICO) NAS远程访问教程:贝锐花生壳一键内网穿透

科技热闻

盘点制造业数字化转型的6大关键问题

优秀

数字化转型 制造业

BeeWorks局域网聊天工具:打造智能高效的企业级即时通讯新生态

BeeWorks

【多线程】Java多线程与并发编程全解析

不在线第一只蜗牛

Java

EMQX Cloud 、时序数据库 TDengine Cloud 实现数据互通!联手打造端到端云上大数据解决方案

TDengine

数据库 tdengine 时序数据库

Android 16 适配重点全解读 | OPPO 技术专场直播回顾

科技热闻

关于集团公司数字化转型的几点思考!

优秀

数字化转型 集团公司

MeetUp 议题征集 龙蜥邀您共探面向泛在智算场景的操作系统技术

OpenAnolis小助手

AI 操作系统 龙蜥社区 龙蜥meetup

从细胞工厂到智能制造:Extracellular 用时序数据库 TDengine 打通数据生命线

TDengine

tdengine 时序数据库 数据库‘’

【CodeBuddy】三分钟开发一个实用小功能之:霓虹灯管菜单导航

jimaks

CSS

2025最好的Next.js面试题(一)

溪抱鱼

面试 前端 next.js

Higress 入选全球 Top 100 MCP Servers 榜单|MCPMarket.com

阿里巴巴云原生

阿里云 云原生 Higress

获国际权威机构认可!龙蜥社区通过 OpenChain ISO/IEC 5230 认证

OpenAnolis小助手

Linux 操作系统 标准化 龙蜥社区 OpenAnolis

MIAOYUN受邀参加“创投天府·周周见”活动,以AI原生技术赋能科创产业新生态

MIAOYUN

AI 云原生 投融资 创投活动 创投天府

三问业务数据化与数据业务化

优秀

数字化 业务数据化 数据业务化

科学智能新篇章:国际科学智能联盟在京成立,开启“大科研时代”

ModelWhale

科学智能 AI4S 国际科学智能联盟

CAD标注样式如何设置?详细教程来了

在路上

cad cad看图 CAD看图王

手游DDoS攻击防御与应对策略

网络安全服务

CDN 服务器 高防IP DDoS 攻击 游戏盾

Java资源管理与防止泄漏:从SeaTunnel源码看资源释放

白鲸开源

Java 开源 数据集成 资源管理 Apache SeaTunnel

实战案例分享:如何基于Apache SeaTunnel全方位进行高效二次开发

白鲸开源

大数据 开源 技术分享 数据集成 Apache SeaTunnel

卫星互联网的未来:数字样机技术如何加速低轨卫星网络的变革

DevOps和数字孪生

卫星 航空航天

首批!火山引擎通过中国信通院《边缘大模型网关技术要求》

火山引擎边缘云

网关 火山引擎 大模型 火山引擎边缘云 DeepSeek

【调研】请为 Karmada Concept <Host Cluster> 提供宝贵建议

华为云原生团队

云计算 容器 云原生

为何PostgreSQL没有聚集索引?解读两大数据库的设计差异

电子尖叫食人鱼

数据库

多图框CAD图纸如何快速导出?快试试导出多页PDF功能

在路上

cad cad看图 CAD看图王

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