• c# 分布式系统开发


    开篇吹牛,吹大牛了各位。

    接连几篇博文,已经将了我们系统常用的东西,主要针对服务端,非桌面系统。

    聊了这么久了,最后将这所有内容打包,完成一个系统。可能称为组件才合适,因为我没有提供启动程序。

    每一个模块都是尽量做到公共化,统一化

    总结一下:

    通信组件,序列化组件,特性反射,扩展方法,结构返回模板,缓存,负载均衡,etcd的注册中心(这个是在java部分讲的,我只是提供了c#版本的客户端代码)。反射方法有了。

    这样组合起来,再加上你们的业务模块,就是一个完整的系统了,任意使用组合。

    我自己组合了一个,不知道叫什么名字。暂时就叫特性服务吧。

    天下大势,分久必合,合久必分。

    最开始写代码,一个系统,一个项目到底。后面分项目,再后面分系统,再后面分布式。

    然后运维麻烦了,代码要少要通用,再次合成通用的,最好一个组件很多功能。高大尚。。。。

    现在呢?微服务来了,把你写的多功能强大系统再分出来。哎。。。。

    回到我这里。

    根据现在经常用到的三个方面。RPC,MQ另外加上RestFull模型。

    统一一下,定义一个特性SrvAttribute,放在类上就是服务名称,放在方法上就是要暴露的方法。

    这样提供TPC就可以接收HTTP请求了,就是RestFull了。

    定义一个公共的接口,服务端实现接口,或者不实现也可以。只要把特性加上就是了。

    客户端实现接口,在实现的接口方法里面,打包自己的参数,方法名称,以及服务名称;序列化以后传递到服务端

    服务端反序列化,然后解析服务名称,方法名称,然后反射调用。

    这样就把2者合并了。

    MQ怎么办?凉拌,自己写个方法传输byte[]数组就是了,在服务端写一个接收注册的方法就是了。

    就一个注册分发,一个数据接收方法,保持注册地址对象,就是一个MQ服务了,MQ需要开发服务端功能。

    如果再加上etcd的分布式部署,就是一个分布式集群了。

    所有代码项目都上传了GIT,就是前几篇博文的地址。

    关于反射多说一下。

    现在分了几个平台。

    发现Emit确实快,但是它只支持.net framework,没有支持,.net standar不支持,没有办法,就写了2个相同的。

    另外就是动态编译,也是只有.net framework,所以写了个客户端项目,动态编译实现接口,这样你只要一个接口库就可以了,什么都不需要写,配置写好就可以了。动态编译里面自动继承接口,然后打包方法参数,名称。定时编译缓存dll,下次启动就直接动态加载dll就可以了。RPC你什么都不做,就是用结果,设置通信就可以。安逸吧?

    如果是其它平台就得直接实现接口打包参数了。

    大吹牛就这样结束了。刚刚买了一本.net性能的书,等我看完看有没有和大家吹的。没有的话就基本这样了。

    很久没有来csdn了。来了就系统的和大家吹牛皮。

  • 相关阅读:
    关于几种滤波的对比
    学习笔记深入理解Java中的HashMap数据结构
    学习笔记Redis基础常识
    学习笔记Java内存模型
    学习笔记理解GC
    工作中的点点滴滴单例的使用
    工作中的点点滴滴学习一下门面模式
    工作中的点点滴滴接口幂等的问题
    【转载】WCF、WebAPI、WCFREST、WebService之间的区别
    【转载】工具分享——将C#文档注释生成.chm帮助文档
  • 原文地址:https://www.cnblogs.com/jinyu20180311/p/10312358.html
Copyright © 2020-2023  润新知