听闻一周前,微软公布了.net core2.0,以及各种各样的其他core2.0.大家都很兴奋.微妈的诚意真是满满的.这次开源势头让我感觉到了微妈的技术实力之雄厚.我在这里祝福C#越来越好.细心的人似乎发现Orleans在github中是和net core分在一起的.Orleans的2.0何时发布呀…
现在我们面对的Orleans1.5(github上是1.6)已经是一个成熟的框架了.涉及到分布式的方方面面,我突然觉得我原来暂定的8篇文章都介绍不完全.我尽量介绍完整,至少让大家能入门,后边的修行就看大家自己的努力了.如果读者中有人能够和我分享,与我共同讨论我也是非常欢迎的.我的联系方式在第一篇文章中这里就不再复述了.
我现在利用<Orleans简单配置>文章中介绍的内容,配置一个可以分布式的silo,观察它们的行为.这里只介绍2种,其余的配置方式往读者自己研究.
我先说利用sql server数据库作为"服务自我发现"的服务
还是跟以前一样,我一步一步来.
基于SQL server的集群步骤
回顾之前的文章中在集群中客户端配置应该是这个模样:
<ClientConfiguration xmlns="urn:orleans"> <SystemStore SystemStoreType="SqlServer" DeploymentId="target deployment ID" DataConnectionString="SQL connection string"/> </ClientConfiguration>
这里解释一下,还记得持久化中配置文件的主体是什么吗?对了是<StorageProviders>节.这个节的内容定义了Orleans在持久化时,要利用的存储中间件的各种参数.
而我们这里要利用的是<SystemStore>,它定义了与"系统"相关的变量应该存储在哪里.我只要定义好<SystemStore>后Orleans就会自动使用服务发现.
由于Orleans使用MembershipTable 来控制silo与silo的关系变化(谁加入了集群,谁离开了集群等等)如果配置好了<SystemStore>,这个MembershipTable就会存储在数据库中.所有的silo都要以数据库中的成员关系表为标准.这个表长成这个样子
其中有一个字段就是silo的地址.因此silo可以发现其他的silo,它们可以构成一个集群,而client可以发现集群内所有的silo.从而与集群互动.
按照以上讨论,我修改了一下配置文件.如下.
此处client也需要配置,因为client也需要读取成员关系表,以便知道所有silo的地址和状态.为了使client可以利用<SystemStore>必须在client里引用OrleansSQLUtils以及System.Data.SqlClient的包,
运行一下,就会有如下截图
再运行一个.找到host.exe