为了摸索c/c++插件框架,顺便把相关知识捋一捋。
Service Oriented Architecture 即面向服务的架构, 简称SOA。
SOA是一种设计方法或思想(没有具体的实现)。它面向服务的分布式计算,服务间松耦合,通过网络调用(而非进程内调用)来通信,从而配合起来提供一系列的功能。
有种观点说, SOA有两种实现方式,中心化方式就是ESB(企业服务总线),去中心化的服务就是微服务。
ESB主要是做了消息转化和路由工作,让不同的服务互联互通。但是ESB容易成为瓶颈,因为它跟所有业务都耦合了。所以后来出现了微服务的思想
微服务更加去中心化,强调服务根据业务来划分,彻底的组件化和服务化,将原来的单个业务拆分成多个可独立开发、运行的小服务。服务之间直接通信,不再有一个统一的中间的媒介。根本诉求是扩展性,方便开发、部署和运维。
微服务框架需要“RPC+服务治理”,其中RPC (SOPA-http+xml, REST-http+json,或者其它二进制RPC)负责通信,服务治理负责管理服务
我理解, SOA的出发点是为了治理臃肿的单块程序,提高程序的可复用性。
而微服务是SOA的更小粒度的实现,除了解决单块程序的问题,由于去中心化更加灵活。更强调对开发、部署和运维的快速变化。
根据《微服务设计》这本书,微服务的好处包括:弹性(容灾)、扩展(插件化)、简化部署(分批上线)、与组织结构匹配、可组合性、对可替代性的优化。
不考虑微服务框架的复杂性,微服务的好处还是很吸引人的。
我希望能在单机中借鉴微服务的思想, 使用这种插件化的方式构建本地程序,有什么办法吗?
我经过一些搜索理解,找到了一些框架。下面一一说明一下。
综上,对c++ 开发来说,我的推荐顺序是:x3c > CppMicroservices > CTK> NanoMsg
面试官问我:SOA架构和微服务架构的区别是什么?我居然答错了
SOA、ESB、微服务的关系梳理
微服务与SOA的区别
【Android系统】binder 到底是什么?openbinder 又是什么?它是什么机制?
openbinder的github(非官方):https://github.com/seyko2/openbinder
为什么 Android 要采用 Binder 作为 IPC 机制?
Linux专属跨进程通信——D-Bus介绍
KDBUS在YUNOS上的移植
OSGi 和 C++:这里比较了几种c++的OSGi实现,是CppMicroServices作者写的。
C++ 应用程序可借助C++微服务实现OSGi API:CppMicroServices作者接受采访
celix的github
CppMicroServices官网
CppMicroServices GitHUb
第01课:入门篇——初识 CTK
CTK Plugin Framework 介绍
X3C github
C++通用插件框架X3C已在公网开源:作者博客的介绍
pluma项目地址:http://pluma-framework.sourceforge.net/
pluma官网:http://pluma-framework.sourceforge.net/