Sekiro原理

简介: 这篇文章介绍了SEKIRO,一个多语言的、分布式的、与网络拓扑无关的服务发布平台,它支持通过编写不同语言的handler将功能发布到中心API市场,并通过RPC方式调用,特别适用于受限环境下的功能外放和服务提供。

Sekiro

SEKIRO是一个多语言的、分布式、网络拓扑无关的服务发布平台,通过书写各自语言的handler将功能发布到中心API市场,业务系统通过RPC的方式使用远端节点的能力。

更多介绍,请参考详细文档: http://sekiro.iinti.cn/sekiro-doc/

各语言样例代码: https://github.com/yint-tech/sekiro-samples

安装包下载:iinti sekiro-demo https://oss.iinti.cn/sekiro/sekiro-demo

Sekiro是一个RPC框架

sekiro主要支持多节点的程序调用,所以他归属于RPC(Remote Procedure Call)框架:API管理、鉴权、分布式、负载均衡、跨语言

Sekiro不是常规意义的RPC框架

通常情况下,在后端微服务下RPC框架主要用于拆分复杂业务模块,以及多节点集群提升单机性能瓶颈的能力。他们一般是单个机房下业务机器组,调用其他业务机器组。
Dubbo、springCloud、grpc便是目前市面上具有代表性的RPC解决方案,并且他们都是世界顶级的项目。然而Sekiro并不是解决这种常规RPC能力场景的方案。

Sekiro主要提供的功能是: 受限上下文环境下的功能外放,服务提供者(provider)运行在一个受限环境中,导致这个服务不能作为一个普通的算法方便的转移到内部服务,而此时我们的业务又希望可以使用这种受限环境下的功能。

  • 一个加密算法,运行在客户端程序中,服务需要使用它但是没有完成这个算法的破译,可以通过sekiro注入代码到这个客户端,然后发布算法的API
  • 一份数据,由于权限限制,仅允许在机构内网使用(机构来源ip检查),但是我们希望在外部服务调用。可以在机构内网书写sekiro客户端,实现API发布
  • app(或者终端)程序,存在给C端客人使用的能力,但是我们希望在B端业务能够使用这个能力,那么通过Sekiro连接他,B端参数转发到app中,使用app代理调用能力:(这就是爬虫行业所谓的RPC爬虫)
  • 服务提供者有一个能力需要给其他人使用,但是不希望交付代码,以及不希望泄漏这个服务对应的机器(IP地址等),那么可以通过sekiro发布服务。其他人只能通过sekiro使用能力,而无法了解这个能力的任何细节。
  • 一个算法,需要复杂的计算环境,无法在外部服务轻松部署,那么可以使用Sekiro,将API寄身在可用环境上,然后export到外部

核心流程

  1. 存在一个中心服务器:sekiro中心服务,他需要服务器端,可以被consumer和provider连接
  2. 存在多种语言的客户端,java、js、python等,并且使用这些语言实现了和sekiro中心服务器的通信和API包装
  3. 用户在各自语言中,使用sekiro客户端API编写handler,用于接受参数并且完成到真实能力的转发调用,连接sekiro服务和本地环境服务
  4. 外部用户调用sekiro中心服务API,被sekiro服务转发到对应的客户端handler,获得调用结果后,原链路返回给用户

构建教程

  • 安装Java
  • 安装maven
  • Linux/mac下,执行脚本:build_demo_server.sh,得到文件target/sekiro-open-demo.zip极为产出文件
  • 运行脚本:bin/sekiro.shbin/sekiro.bat
  • 文档: http://127.0.0.1:5612/sekiro-doc 假设你的服务部署在本机:127.0.0.1

安装包

相关文章
|
资源调度 测试技术 Linux
一款接口自动化神器—开源接口测试平台Lim(Less is More)
一款接口自动化神器—开源接口测试平台Lim(Less is More)
598 2
|
搜索推荐 数据可视化 Linux
【超乎想象】Archman Linux:一款基于Arch Linux的极致轻量、极速稳定、超凡体验的Linux发行版!
【8月更文挑战第22天】Archman Linux是一款基于Arch Linux的轻量级、快速且稳定的发行版,继承了Arch的技术优势并提供友好的桌面环境。安装步骤包括下载ISO镜像、创建启动盘、从USB启动进入Live环境、运行安装程序、分区、配置网络及安装基本系统、设置密码、安装引导程序并重启。配置涉及系统更新、安装桌面环境与常用软件、个性化设置、安装驱动、设置自动更新和备份计划。通过提供的Shell脚本可自动化完成部分配置工作。无论新手还是老手,Archman Linux都能提供出色的体验。
518 2
|
12月前
|
数据挖掘 UED
ClkLog埋点分析系统支持漏斗分析
漏斗分析是基于事件的一种分析模型。 漏斗分析主要是对一个多步骤的场景进行的每一步的转化数据分析。可以理解为是从顶部(广泛数据)到底部(目标数据)逐步筛选和转化分析的过程。
ClkLog埋点分析系统支持漏斗分析
|
计算机视觉
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
1097 0
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
|
11月前
|
数据采集 JSON 应用服务中间件
urllib与requests模块万字超详细!!
本文介绍了Python中用于发送网络请求的两个重要模块:`urllib` 和 `requests`。首先,文章详细讲解了 `urllib` 模块的基本使用方法,包括构造请求、发送请求、处理响应等。接着,文章重点介绍了 `requests` 模块,强调了其在企业中的广泛应用,以及如何发送GET和POST请求、处理响应、使用代理、处理Cookie等内容。最后,文章还探讨了 `requests` 模块的高级功能,如处理证书错误、设置超时、使用 `retrying` 模块等,帮助读者全面掌握网络请求的处理技巧。
335 4
|
SQL 监控 安全
架构设计第五讲:数据巡检系统的设计与应用
架构设计第五讲:数据巡检系统的设计与应用
771 0
|
数据库 数据安全/隐私保护 C++
Python并发编程实战:线程(threading)VS进程(multiprocessing),谁才是并发之王?
【7月更文挑战第10天】Python并发对比:线程轻量级,适合I/O密集型任务,但受GIL限制;进程绕过GIL,擅CPU密集型,但通信成本高。选择取决于应用场景,线程利于数据共享,进程利于多核利用。并发无“王者”,灵活运用方为上策。
320 2
|
Python
如何查询Python包的所有历史版本
如何查询Python包的所有历史版本
268 5
|
机器学习/深度学习 JSON Linux
NSLog日志输出不全问题分析与解决方案
NSLog日志输出不全问题分析与解决方案
451 0