首页 文章 精选 留言 我的

精选列表

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

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

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

《私有云计算整合、虚拟化和面向服务的基础设施》一2.2服务器整合驱动

2.2服务器整合驱动 尽管实施服务器整合的因素很多,最根本的两个原因在于:服务器散乱以及应用程序“烟囱林立”而产生的数据孤岛。实施新应用的传统模式是—一台服务器运行一个应用,存储子系统相互隔离采用并行方式部署,从长远来看,因为DC和其相关的组件会随着数据规模的不断增长而无限增加,所以这样的模式存在扩展问题。 2.2.1经典服务器散乱综合症 “服务器散乱”一词是指DC的物理设备所占用的CPU周期、内存、存储等内部系统资源超过了实际所需,并且这些物理设备过度消耗了电能、冷却能量以及设备安置空间的情况。大多数传统工作模式是一个应用运行在一个服务器上。例如,为了满足开发、测试、备份等需求等产生的新应用都需要增加相应的服务器,因此将新的物理服务器增加到现有DC时,都将相应地提高存储、网络以及安全控制的复杂度。 2.2.2应用烟囱和数据孤立 如图2-3

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

第三方节点如何接入 OpenAgenet(OAN):从资源发布到可信发现的基础设施协作

在智能体互联网里,资源不再只来自单一平台。一个可调用的 Agent Service、一个 MCP Server、一个自动化 Skill、一个 Tool/API,都可能由不同开发者、企业、研究机构或社区维护。随着资源规模扩大,单一官方节点很难承担全部注册、审核、发现和领域治理工作。OpenAgenet(OAN)的设计目标之一,就是让第三方节点能够在统一信任框架下参与资源注册、分发和发现。

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

互联网底层基础设施构建者:一位高中女教师的代码改变了世界

1960年代,一位利用暑假时间兼职编程的数学教师,用代码证明了分布式网络的可行性,为现代互联网奠定了理论基础。然而,她的名字却长期被历史遗忘。 2026年5月,《科学美国人》杂志发表了一篇深度报道,揭开了互联网发展史上一位被忽视的关键人物——Sharla Perrine Boehm。这位曾在圣莫尼卡高中教数学的女教师,在1960年代初期于RAND公司兼职期间,编写了一个具有开创性的网络模拟程序,该程序首次证明了分布式、去中心化通信网络的可行性,直接为后来ARPANET乃至现代互联网的诞生提供了理论支撑。 冷战背景下的通信危机 故事要从1961年11月24日那个惊心动魄的夜晚说起。当晚,美国弹道导弹预警系统突然全部失灵,奥马哈基地的值班军官无法与科罗拉多斯普林斯的通信总部取得联系。战略空军司令部司令托马斯·鲍尔将军立即下令核部队进入全面警戒状态,轰炸机驶向跑道,美国一度处于核战争一触即发的边缘。然而,数分钟后通过空中轰炸机传递的雷达消息证实,这只是一场虚惊——科罗拉多一个中继站的电机过热导致了整个系统中断,而这个站点恰好是所有通信的必经枢纽。 这一事件暴露了当时美国军事通信系统的致命缺陷:基于电话线路和短波无线电的通信网络高度集中化,每条消息最多经过五个节点,一旦关键节点被摧毁,整个网络就会瘫痪。在核战争威胁日益加剧的冷战高峰期,这种脆弱性让美国军方深感忧虑。 Paul Baran的分布式网络构想 RAND公司的计算机科学家Paul Baran提出了一种革命性的解决方案:建立一个没有中心节点的分布式网络,每个节点只与相邻节点连接,通过多条路径传输信息,即使部分节点被摧毁,网络整体仍能存活。他将这种技术称为"热土豆路由"——每个数据包到达节点后必须立即转发给下一个节点,网络实时动态决定传输路径。 然而,Baran面临巨大阻力。RAND公司的同事们大多专注于传统模拟通信,对数字计算机技术持怀疑态度。当Baran向垄断长途通信的AT&T推销这一构想时,工程师们的反应是居高临下的质疑:"等等,孩子,你是说在数据还没从国家另一端传过来之前就打开开关?"Baran回忆道,"他们说,'孩子,电话就是这么工作的',态度相当傲慢。" Sharla Boehm的关键突破 Baran急需用实际证据证明自己理论的可行性,而完成这一任务的人正是Sharla Perrine Boehm。在1960年代初期,Sharla还是圣莫尼卡高中的一名数学教师,利用暑假和学术休假在RAND公司兼职编程。在男性主导的工程领域,女性工程师极为罕见——正如系统工程师Doug Rosenberg所说:"那时候女性都是秘书,1960年代初期根本没有女性从事工程工作,到处都是留着平头的男人。" Sharla在RAND公司接受了这项挑战:编写一个模拟程序,证明分布式网络能够在节点受损的情况下继续运行。她设计的模拟系统实现了"分组交换"的核心概念——将消息分割成小包,通过不同路径发送,每个数据包根据网络状态实时改变路由。她还编写了一个名为"damage"的子程序,可以模拟摧毁任意五个节点,观察网络的自愈能力。 模拟结果显示,即使一半网络被瞬间摧毁,剩余节点也能在不到一秒内重新组织并恢复通信。更令人惊叹的是,Sharla在1960年代的计算机上实现了类似现代机器学习的功能——网络能够"学习"如何应对节点失效。系统工程师Doug Rosenberg评价道:"如果这是2025年,这就叫机器学习。她让网络学会了如何应对节点掉线。在那时,机器学习根本不存在。但看看1964年的那篇论文,毫无疑问这就是机器学习。" 被尘封的贡献与历史的回响 尽管Sharla的模拟为Baran提供了关键证据,但由于Baran对国防通信局技术能力的不信任,以及AT&T的抵制,这项技术在当时并未立即投入实施。Sharla的工作被束之高阁,直到数年后以全新形式重新出现。 1969年10月,第一条信息"lo"(本应传输"login",但系统崩溃导致仅传输了前两个字母)从UCLA发送到斯坦福大学的计算机上,标志着ARPANET的诞生。这个由美国国防部高级研究计划局(ARPA)建立的早期计算机网络,采用了与Sharla模拟相似的分布式架构,最终演变成了今天的互联网。 然而,Sharla的名字几乎从历史中消失。1996年,Katie Hafner出版了《Where Wizards Stay Up Late: The Origins Of The Internet》,这本关于ARPANET历史的权威著作中完全没有提及Sharla——尽管她曾与Paul Baran共同发表过重要论文。Hafner在报道中坦言:"我从未想过要问'那是谁?',我总是关注那个著名的男人,我的同事Paul Baran。" 迟来的认可 如今,随着"失落科学女性倡议"(Lost Women of Science Initiative)的挖掘,Sharla的贡献终于得到应有的认可。她在1964年发表的论文《On Distributed Communications》中详细描述了模拟结果,这份文献被工程师Tony Rutkowski称为"网络人工智能的最初火花"。 Sharla Boehm的故事不仅是一位杰出女性科学家的个人传奇,更折射出科技史书写中长期存在的性别偏见。在开源社区日益强调多元包容的今天,重新审视和铭记这些被遗忘的贡献者,对于构建更加公平的技术文化具有重要意义。 参考来源: Scientific American - The programmer whose code underpins the Internet (2026-05-18) https://www.scientificamerican.com/article/the-programmer-whose-code-underpins-the-internet/ Lost Women of Science Podcast - Sharla Perrine Boehm https://www.scientificamerican.com/podcast/lost-women-of-science/

资源下载

更多资源
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应用均可从中受益。

用户登录
用户注册