首页 文章 精选 留言 我的

精选列表

搜索[云基础设施],共10000篇文章
优秀的个人博客,低调大师

智能体互联网基础设施项目 OpenAgenet(OAN)中的去中心化治理实施方案

智能体互联网不是简单地把更多 Agent、工具、MCP Server、Skill 放到一个搜索框里。真正困难的问题在于:当资源来自不同开发者、不同组织、不同平台甚至不同节点运营方时,系统如何判断“谁有资格发布资源”“哪个发现节点有资格展示资源”“某个资源是否仍处于有效状态”“客户端在调用前应该验证哪些证据”。

优秀的个人博客,低调大师

x-msg-im-hlr 0.0.1 发布, X-MSG-IM 去中心化即时通信基础设施

x-msg-im-hlr在X-MSG-IM系统中主要负责域内用户数据, 终端在线状态维护, 它是用户的归属位置. 在跨域场景中, 它可能还会提供拜访位置vlr能力. 图中的其它网元源代码会在2020-01-01前陆续开放, 它们的功能描述如下: 网元 描述 x-msg-ap 访问点, 异构客户端与异构协议接入 x-msg-channel-status channel状态服务, 支持在一切有状态的channel上sub/pub x-msg-im-auth 鉴权服务 x-msg-im-group 群组归属位置 x-msg-im-hlr 用户归属位置 x-msg-im-mgr 管理员接入 x-msg-im-org 企业组织架构服务 x-msg-oss 文件与对象存储

优秀的个人博客,低调大师

x-msg-im-group 0.0.1 发布, X-MSG-IM 去中心化即时通信基础设施

x-msg-im-group在X-MSG-IM系统中负责im业务中最基础也是最复杂的功能:群组,消息. 图中的其它网元源代码会在2020-01-01前陆续开放, 它们的功能描述如下: 网元 描述 x-msg-ap 访问点, 异构客户端与异构协议接入 x-msg-channel-status channel状态服务, 支持在一切有状态的channel上sub/pub x-msg-im-auth 鉴权服务 x-msg-im-group 群组归属位置 x-msg-im-hlr 用户归属位置 x-msg-im-mgr 管理员接入 x-msg-im-org 企业组织架构服务 x-msg-oss 文件与对象存储

优秀的个人博客,低调大师

x-msg-im-auth 0.0.1 发布,X-MSG-IM 去中心化即时通信基础设施

x-msg-im-auth在X-MSG-IM系统中负责客户端账号管理与身份认证. 现已同时支持tcp,websocket,http接入. 图中的其它网元源代码会在2020-01-01前陆续开放, 它们的功能描述如下: 网元 描述 x-msg-ap 访问点, 异构客户端与异构协议接入 x-msg-channel-status channel状态服务, 支持在一切有状态的channel上sub/pub x-msg-im-auth 鉴权服务 x-msg-im-group 群组归属位置 x-msg-im-hlr 用户归属位置 x-msg-im-mgr 管理员接入 x-msg-im-org 企业组织架构服务 x-msg-oss 文件与对象存储

优秀的个人博客,低调大师

x-msg-channel-status 0.0.1 发布,X-MSG-IM 去中心化即时通信基础设施

x-msg-channel-status在X-MSG-IM系统中提供channel状态服务. 支持在一切有状态的channel上sub/pub. 可参考这篇博文. 图中的其它网元源代码会在2020-01-01前陆续开放, 它们的功能描述如下: 网元 描述 x-msg-ap 访问点, 异构客户端与异构协议接入 x-msg-channel-status channel状态服务, 支持在一切有状态的channel上sub/pub x-msg-im-auth 鉴权服务 x-msg-im-group 群组归属位置 x-msg-im-hlr 用户归属位置 x-msg-im-mgr 管理员接入 x-msg-im-org 企业组织架构服务 x-msg-oss 文件与对象存储

优秀的个人博客,低调大师

libx-msg-im-xsc 0.0.1 发布,X-MSG-IM 去中心化即时通信基础设施

libx-msg-im-xsc是一个基于actor模型的单进程多线程并发通信服务器框架. 它的目标是为上层应用提供一个高性能, 可测量, 并行无锁, 网络透明, 全异步的开发环境. 在X-MSG-IM系统中, 它为所有核心网元提供网络事务控制, 应用层消息处理, 透明的分布式信令跟踪(调用链)能力. 既然是到了应用层, 提供的api自然也比较友好. 因此, 你可以很快速地在这些api上构建起一个并发服务器, 看下面的例子: 服务器: #include "XmsgTcpLog.h" #include "XmsgHttpLog.h" #include "XmsgWebSocketLog.h" #include "net-x-msg-im-auth.pb.h" #define X_MSG_N2H_PRPC_BEFOR_AUTH(__MSGMGR__, __BEGIN__, __END__, __CB__) (__MSGMGR__->reg(__BEGIN__::descriptor(), __END__::descriptor(), NULL, (void*)(__CB__), false)); static void x_msg_im_auth_simple(shared_ptr<XscChannel> channel, SptrXitp trans, shared_ptr<XmsgImAuthSimpleReq> req); int main(int argc, char **argv) { Log::setRecord(); Xsc::init(); /* libxsc-cpp初始化. */ // shared_ptr<XscTcpServer> tcpServer(new XscTcpServer("tcp-server", shared_ptr<XmsgTcpLog>(new XmsgTcpLog()))); shared_ptr<XscTcpCfg> tcpCfg(new XscTcpCfg()); tcpCfg->addr = "0.0.0.0:1224"; if (!tcpServer->startup(tcpCfg) || !tcpServer->publish()) /* tcp服务器启动. */ return EXIT_FAILURE; // shared_ptr<XscHttpServer> httpServer(new XscHttpServer("http-server", shared_ptr<XmsgHttpLog>(new XmsgHttpLog()))); shared_ptr<XscHttpCfg> httpCfg(new XscHttpCfg()); httpCfg->addr = "0.0.0.0:1225"; if (!httpServer->startup(httpCfg) || !httpServer->publish()) /* http服务器启动. */ return EXIT_FAILURE; // shared_ptr<XscWebSocketServer> webSocketServer(new XscWebSocketServer("web-socket-server", shared_ptr<XmsgWebSocketLog>(new XmsgWebSocketLog()))); shared_ptr<XscWebSocketCfg> webSocketCfg(new XscWebSocketCfg()); webSocketCfg->addr = "0.0.0.0:1226"; if (!webSocketServer->startup(webSocketCfg) || !webSocketServer->publish()) /* websocket服务器启动. */ return EXIT_FAILURE; // shared_ptr<XmsgImN2HMsgMgr> msgMgrTcp(new XmsgImN2HMsgMgr(tcpServer)); /* 服务器上的消息管理器. */ shared_ptr<XmsgImN2HMsgMgr> msgMgrHttp(new XmsgImN2HMsgMgr(httpServer)); shared_ptr<XmsgImN2HMsgMgr> msgMgrWebSocket(new XmsgImN2HMsgMgr(webSocketServer)); // X_MSG_N2H_PRPC_BEFOR_AUTH(msgMgrTcp, XmsgImAuthSimpleReq, XmsgImAuthSimpleRsp, x_msg_im_auth_simple /* 消息注册. */) X_MSG_N2H_PRPC_BEFOR_AUTH(msgMgrHttp, XmsgImAuthSimpleReq, XmsgImAuthSimpleRsp, x_msg_im_auth_simple) X_MSG_N2H_PRPC_BEFOR_AUTH(msgMgrWebSocket, XmsgImAuthSimpleReq, XmsgImAuthSimpleRsp, x_msg_im_auth_simple) // Misc::hold(); return EXIT_FAILURE; } /* 在这里处理消息. */ void x_msg_im_auth_simple(shared_ptr<XscChannel> channel, SptrXitp trans, shared_ptr<XmsgImAuthSimpleReq> req) { /** * * channel即网络信道, 这里是客户端连接. * * trans即network transaction, 一切消息都以事务开始, 以事务结束. * */ thread t([trans, req]() /* 事务总是在channel归属的线程上开始, 却可以在任意线程上结束. */ { shared_ptr<XmsgImAuthSimpleRsp> rsp(new XmsgImAuthSimpleRsp()); rsp->set_token("token"); trans->end(rsp); /* 结束事务. */ }); t.detach(); } 客户端-tcp public static void main(String[] args) throws Exception { XmsgImAuthSimpleReq.Builder req = XmsgImAuthSimpleReq.newBuilder(); req.setUsr("usr"); // XscProtoPdu pdu = new XscProtoPdu(); /* 基于xsc协议的pdu构造. */ pdu.transm.indicator = 0x00; pdu.transm.trans = new XscProtoTransaction(); pdu.transm.trans.trans = XscProto.XSC_TAG_TRANS_BEGIN; pdu.transm.trans.stid = 0x00112233; pdu.transm.trans.msg = XmsgImAuthSimpleReq.getDescriptor().getName(); pdu.transm.trans.dat = req.build().toByteArray(); // Socket sock = new Socket("127.0.0.1", 1224); sock.getOutputStream().write(pdu.bytes()); byte by[] = new byte[0x200]; int len = sock.getInputStream().read(by); /* 这里很不严谨, 仅用于演示. */ pdu = XscProtoPdu.decode(by, 0, len); Log.info("rsp: %s", Misc.pb2str(XmsgImAuthSimpleRsp.parseFrom(pdu.transm.trans.dat))); } 客户端-http public static void main(String[] args) throws Exception { XmsgImAuthSimpleReq.Builder req = XmsgImAuthSimpleReq.newBuilder(); req.setUsr("usr"); // HttpClient client = HttpClient.newBuilder().build(); HttpRequest request = HttpRequest.newBuilder()// .uri(URI.create("http://127.0.0.1:1225/"))// .header("x-msg-name", XmsgImAuthSimpleReq.getDescriptor().getName())// .header("x-msg-dat", Crypto.base64enc(req.build().toByteArray()))// .build(); HttpResponse<byte[]> rsp = client.send(request, HttpResponse.BodyHandlers.ofByteArray()); Log.info("rsp: %s", Misc.pb2str(XmsgImAuthSimpleRsp.parseFrom(XmsgImHttpRsp.parseFrom(rsp.body()).getDat()))); } 客户端-websocket public static void main(String[] args) { Log.setRecord(); var httpClient = HttpClient.newHttpClient(); var wsCompletableFuture = httpClient.newWebSocketBuilder().buildAsync(URI.create("ws://127.0.0.1:1226"), new Listener() { public void onOpen(WebSocket ws) { XmsgImAuthSimpleReq.Builder req = XmsgImAuthSimpleReq.newBuilder(); req.setUsr("usr"); // XscProtoPdu pdu = new XscProtoPdu(); /* 基于xsc协议的pdu构造. */ pdu.transm.indicator = 0x00; pdu.transm.trans = new XscProtoTransaction(); pdu.transm.trans.trans = XscProto.XSC_TAG_TRANS_BEGIN; pdu.transm.trans.stid = 0x00112233; pdu.transm.trans.msg = XmsgImAuthSimpleReq.getDescriptor().getName(); pdu.transm.trans.dat = req.build().toByteArray(); // ws.sendBinary(ByteBuffer.wrap(pdu.bytes() /* 消息出栈. */), true); ws.request(1); } public CompletionStage<?> onBinary(WebSocket ws, ByteBuffer dat, boolean last) { byte by[] = new byte[dat.limit()]; dat.get(by, 0, by.length); try { XscProtoPdu pdu = XscProtoPdu.decode(by, 0, by.length); /* 解析收到的响应字节流. */ Log.info("rsp: %s", Misc.pb2str(XmsgImAuthSimpleRsp.parseFrom(pdu.transm.trans.dat))); } catch (Exception e) { Log.error(Log.trace(e)); } ws.request(1); return null; } public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) { Log.debug("web-socket channel closed"); return null; } public void onError(WebSocket ws, Throwable error) { Log.debug("web-socket channel error occured: %s", Log.trace(error)); ws.request(1); } }); wsCompletableFuture.join(); Misc.hold(); } 完整的例子在这里: x-msg-im-xsc-examples-cpp x-msg-im-xsc-examples-java

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册