zoukankan      html  css  js  c++  java
  • 多模块分布式系统的简单服务访问

    多模块分布式系统的简单服务访问 - OSGI原形(.NET)

    先描述一下本篇描述的适用场景(3台server, 各个模块分布在各个Server上,分布式模块互相依赖、交互的场景):

     多个OSIG引擎交互上,使用的是.net remoting实现的,原理:

    1. 当请求某个接口时(也就是要获取某Service Instance时),OSGI通过remoting连接到提供这个服务的url上,如:tcp://localhost:8888/OSGI
    2. 连接成功后,源OSGI发送OpenService命令,让目标OSGI注册TCP Channel
    3. 根据接口type、dll路径、appdomain name,在某个AppDomain中执行解析接口,然后连接到目标OSGI新开的服务上(AppDomain.DoCallBack)
    4. 在配置上,除了上篇文章中的模块配置信息外,在Manifests.xml文件中也加入了分布式服务配置,如下:
    5. Manifests.xml
    6. 复制代码
      <?xml version="1.0" encoding="utf-8" ?>
      <Manifests>
        <ServicePort>1000</ServicePort>
        <RemoteServiceMap>
          <Service TargetIP="127.0.0.1" TargetPort="2000">OrderModule.PublicInterfaces.IOrderProcessor</Service>
        </RemoteServiceMap>
      </Manifests>//这个代表:当前宿主没有模块承载,但是能和其他宿主通信,达到转发的目的
      复制代码

      既有本地模块,又有远程服务依赖时的配置文件

    7. 复制代码
      <?xml version="1.0" encoding="utf-8" ?>
      <Manifests>
        <ServicePort>2000</ServicePort>
        <Manifest>D:documentsvisual studio 2010ProjectsOSGIDemoOrderModuleinDebugManifest.xml</Manifest>  //本地模块定义
        <RemoteServiceMap>
          <Service TargetIP="127.0.0.1" TargetPort="3000">LoggingModule.PublicInterfaces.ILog</Service>  //给ILog这个接口提供服务的真正服务在远程server上,是个远程依赖
        </RemoteServiceMap>
      </Manifests>
      复制代码
      复制代码
      <?xml version="1.0" encoding="utf-8" ?>
      <Module>
        <Name>Order Module</Name>
        <Version>1</Version>
        <Assembly>OrderModule</Assembly>
        <Activator>OrderModule.Activator</Activator>
        <RequiredService>LoggingModule.PublicInterfaces.ILog</RequiredService>      //此处的配置没有什么特别的
        <ProvidedService>OrderModule.PublicInterfaces.IOrderProcessor</ProvidedService>
      </Module>
      复制代码

     我的demo(里面有3个Host,宿主):

     运行效果:

     很好很强大,哈哈,相信以后会更加好。等我把这个重构下,再换上wcf。。。。这样事务就一下子集成了。

     代码下载

    自省推动进步,视野决定未来。
    心怀远大理想。
    为了家庭幸福而努力。
    A2D科技,服务社会。
    A2D Framework(Alpha)
    • 1. Cache System(本地缓存与分布式缓存共存、支持Memcache和Redis、支持贴标签形式(类似Spring 3.x的Cache形式))
    • 2. Event System(本地事件与分布式事件分发)
    • 3. IoC(自动匹配功能,实例数量限制功能)
    • 4. Sql Dispatcher System(基于Sql server的读写分离系统)
    • 5. Session System(分布式Session系统)
    • 6. 分布式Command Bus(MSMQ实现,解决4M限制,支持Session的读取)
    • 7. 规则引擎
     
    分类: 架构
  • 相关阅读:
    演讲-自我认识
    App Store--心酸的上线路,说说那些不可思议的被拒理由
    100个iOS开发/设计面试题汇总
    APP store 上架过程中碰到的那些坑&被拒的各种奇葩原因整理&审核指南中文版
    iOS图片攻略之:有3x自动生成2x 1x图片
    iOS多语言备选机制
    程序员如何提高自己》
    initWithFrame 和 initWithCoder
    黑客界大拿tombkeeper文章:怎么学好技术成为技术大拿(题目我自拟的)
    程序员常去的国外开发社区
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3316254.html
Copyright © 2011-2022 走看看