• albian开发笔记六albian的架构


          很久之前就想写这篇文章,但是作为一个技术人员,苦于但是只是心中有概念和想法,实施还没有真正的开始,所以一直没有写。现在,albian的net实现主体部分已经完成了75%左右,单机已经可以勉强凑合的运行了,所以心中有了底气,才写这篇关于albian架构的文章。这一篇完成后,下面一连几篇都将会讲述albian的使用方法,从简单开始一直到复杂。

         说起albian的架构,就要说起albian的起源。albian其实来源于本人在电商圈内的一些开发经验和实际的项目实施。虽然电商的经验不多,但是加上“站在巨人的肩膀上”,也能勉强的凑合着把albian搞出来。由此可见,albian其实完全是为了电商行业量身定做的(上个星期拿着albian去和朋友交流,朋友提出了很多的意见,最后只有几个被接纳了,丢掉的都是经过讨论和互联网或者电商差别比较大的)。所以albian其实不太适合MIS或者ERP此类的系统。那么就要说到互联网、电商和MIS、ERP传统行业的不同特点问题。其实这些合适或者不合适最大的问题在于互联网、电商面对的一般是海量、高并发的问题;而MIS或者ERP一般面临的是数据的复杂关系、复杂的业务的问题。因为不管是互联网、电商、MIS或者是ERP,归根结底都是面向数据库的编程(创造一个名词:ODBP),所以最终的问题都会是在数据库层面上表现。相对于互联网、电商,数据库中的单表数据量可能很大(有KW甚至更大的),而且数据库也要面临着严重的读压力(互联网经典的2-8原则),但是因为本身数据的特点,数据之间的相关关系性不强,往往很少有相关联3次及以上的表;但是MIS或者ERP就完全不同,单表的压力比较小(一般是在W级别,很少有10W或者100W的,KW的几乎绝迹),但是表之间的相关外键等关系确实错综复杂,而且MIS、ERP相对面向的用户群也是固定的,所以读写压力一般都是可控的。所以如果需要搭建架构,那么就需要面对两种完全不同的特点搭建架构,也许有人说搭建一套就行了,加上开关即可。我个人还是认为一个人同时只能做一件事才能把这件事做好,所以albian还是只是面向互联网或者电商行业。 albian的架构其实很简单,我们先看一张图即可基本上明白albian是怎么一回事:

    如果没看懂就看一下文字说明:个人认为用1,2,3这种方法最能说明清楚,所以还是按照这种格式来说明:

    1. albian其实是一个面向服务和面向数据的框架,它并不提供UI层的实现;
    2. albian一共提供了5个组件来搭建整个底层框架,这5个分别是:Albian Manager Server;Albian Distributed Locker Server ;Albian IOC;Albian ORM; Albian DataBase Router;
    3. Albian Manager Server:主要提供整个使用Albian环境的管理,比如注册Albian、检查Albian、重启Albian等等,因为这些功能对于服务器的性能要求不高,所以这台机器还可以用来作为多台Albian Distributed Locker Server的manager  server;
    4. Albian Distributed Locker Server:主要提供对象在各个应用程序边界的锁,或者说是进程间的锁。功能和Mutex的线程间的锁功能类似,只是Mutex是锁住同一进程内或者说是应用程序边界的对象,让某一线程独享该对象;而Albian Distributed Locker Server提供的是锁住整个应用程序系统(不是操作系统,而是整个站点系统)内的对象,让某一进程或者应用程序边界独享该对象。Albian Distributed Locker Server和Mutex一样是一种编程规则,如果你不使用这种规则,程序也可以运行,但是不保证不会出现进程间的数据不同步问题。使用方法一般也是先获取Albian Distributed Locker Server上的锁,再获得进程内的Mutex,释放的步骤正好相反;Albian Distributed Locker Server的实现目前已经确定会是放到linux上,用纯C实现,业务代码的行数估计也就是K级别的;
    5. Albian IOC:是一个简单的依赖注入实现。它只是简单提供了生成对象并且由Albian托管控制功能。之所以不实现例如参数注入、属性注入等等问题,还是因为觉得没必要去实现这些,一来增加了复杂度,二来albian认为重要的不是在IOC这里,IOC只要能提供一些最简单、最简洁的功能,实现运行性能的最优化即可;
    6. Albian ORM:是一个简单的ORM实现。鉴于互联网和电商的特点,Albian ORM删掉了相比市面上成熟的ORM少的多的功能,因为互联网那和电商基本上只是相对“单表”化的,所以Albian只提供“单表”的操作,而一旦表之间需要关系的维护,那么只有麻烦程序员了。
    7. Albian Database Router:这是Albian整个系统架构的重点。Albian Database Router的实现理论是著名的CAP理论(不知道CAP理论的请google一下)。但是Albian Database Router为了实现海量数据存储和操作的效率,Albian Database Router最后还是在CAP的C上面做了文章,将一致性的要求降低,使用最后一致性来保证效率。Albian Database Router支持多数据库的访问,包括异构数据库。Albian Database Router还支持将对象routing到指定的数据库、指定的表;Albian Database Router提供了用户自定义routing规则的接口;Albian Database Router还提供了乐观的分布式事务解决方案(常见Distributed Algorithms的wait-free termination概念)。

    对于Albian的总体架构和重点的Router功能,看下面两个示意图:

        这是一个读写分离示意图,Albian DataBase Router将会根据配置将数据理由到左边的数据库中,然后再通过数据库之间的同步,将数据同步到后边的MySql中,这样我们就可以查询右面的MySql来减轻DB的压力了;

        这是多次写的示意图,及但一个对象持久化时,根据Albian Database Router的配置,可以将一个对象同时写到两个数据库中去。

  • 相关阅读:
    DNT论坛整合笔记二
    LINQ中的动态排序
    无法安装数据库关系图支持对象的解决方法
    总访问量,日访问量,周访问量统计代码
    ASP.NET 数据绑定控件和 Eval方法
    KindEditor ASP.NET 上传/浏览服务器 附源码
    地图定位 图吧地图定位 附javascript源码每行都有注释
    java.io.IOException: Unable to open sync connection!
    Canvas和Paint实例
    Android初级教程_获取Android控件的宽和高
  • 原文地址:https://www.cnblogs.com/Seapeak/p/2122603.html
Copyright © 2020-2023  润新知