『开源』Slithice 2013 服务器集群 设计和源码
相关介绍文章:
《『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布》
《『集群』003 Slithice 最简分布式(多个客户端,一个独立服务端)》
《『集群』004 Slithice 集群分布式(多个客户端,基于中央服务器的多个集群服务端)》
《『集群』005 Slithice 基于 集群 的 自动容错》
《『集群』006 Slithice 后期改进 和 Slithice可能存在的BUG》
版本库:


Slithice是做什么的
Slithice 是一个 跨平台 的 分布式架构 框架;
旨在简化 分布式开发 的开发难度,节省 开发成本 和 后期维护成本;
并提供 稳定 的分布式容错机制;
其 界面化的集群配置,一体式开发&分布式发布,插件覆盖,容错调度 是 Slithice 最大的亮点;
Slithice 提供 任意 程序集,任意命名空间,任意类名 的 扩展,包括:
配置数据获取方式的扩展(从 什么地方 找寻 服务器配置数据);
调度方式的扩展(比如WCF,Socket,WebService等);
功能插件的扩展(这个就是 最重要的了);
Ps. Slithice 并非 只 针对 集群服务器,同时 Slithice 也支持 最简单的 一个服务端&多个客户端 的 最简分布式;
Slithice名字的由来
Slithice 是 DotA 故事中,娜迦海妖 的名字 —— 只是因为 半年前 练习 小娜迦,所以 才 选取了这个名字;
Slithice的版本演化
之前时间,Slithice 的 架构设想 闪现于脑海,于是 整理了最简单的 设计手稿 和 实现目标
2013-02-10 Project版本库 正式动工 取名 Slithice 2013 累计耗时20小时,完成 先行版 Demo;
2013-06-10 Laura版本库 项目迁移 维持原名 累计耗时60小时,完成 现在版本;
Slithice的目标
Slithice 的 基本目标 就是 简化 集群分布式 开发;
Slithice 的 终极目标 就是 跨平台:
服务端 可以用 .Net、Java 等开发;
客户端 可以用 .Net-PC、.Net-WinCE、.Net-WinPhone、Java、Android、IPhone 等开发;
—— 想必,这是 极好的;
顺带提一下 Slithice 的序列化
Slithice 支持 .Net 自带的序列化(不能跨WinCE等平台) 和 Laura.Serialization 序列化 —— 没有使用架构;
Laura.Serialization 是 作者顺手 累计 30小时 完成的 一个 序列化算法;
Laura.Serialization 支持 .Net-PC、.Net-WinCE 两个平台;
Laura.Serialization 序列化的 byte[] 结构分为:类型区,数据区,结构区
Laura.Serialization 设计思想,只要对 类型区 进行控制:基本就能实现 跨 Java,Android 等 其他平台;
Laura.Serialization 作者顺手 5小时,写了一个 Json 序列化算法(用 字符串 跨平台 显得容易很多)
Slithice集群配置工具 主界面

在测试 Slithice 的 Demo 中,我配置了 7个服务端:
一个 WCF 的 中央服务端;
两个 WCF 的 成员服务端(私有 – 前面有一个棕色皮包的图标);
两个 Socket 的 成员服务端;
两个 WebService 的 成员服务端;
Slithice集群配置工具 配置界面

我们看到的是 WebService_002 的 配置
>蓝色区域 里面的 是 当前服务端 自己可以处理的 Action;
>红色区域 里面的 是 当前服务端 自己不能处理,但是 可以 调度出去的 Action;
>紫色区域 里面的 是 当前服务器 可以调度 的 子服务器(就是 两个 WCF 服务);
>按照 Slithice 的设计思想:能够自己处理的任务,除了强制指定任务的服务器外,基本都会自己处理,自己处理不了的,才会进行调度;

上面 展示的 是 WebService_002 可以调度 出去的 Action;
>TestAction_001、TestAction_002 两个 子服务器 都可以 调度;
>TestAction_1_001、TestAction_1_002 只有 ConsoleWCFService_001 可以调度;
>这里,做了一个 BUG配置:我们将 Slithice_ResetService(重置服务器) 的功能 没有 勾选为自己处理,结果 重置服务器 的功能 也将会 被调度;(Slithice 内置的 Action插件 并没有 特权)
>调度几率:在配置 服务端 时候,可以按照 服务端 所在的 硬件设备 的处理能力 设置 这个值,默认 100000;当 对一个 服务端的 调度 出现错误时,该值 会 -1,调度成功时,该值 会 +1 —— 调度几率,决定了 同一个任务可以多个调度 时的 调度几率;
Slithice集群配置工具 插件覆盖界面


上面 展示的 是 插件覆盖界面;
>ConsoleCenterService 具有 几个 自定义Action;
>其中,TestAction_Center_001 有两个版本, 他们是 同键值的,但是 最终被启用 的是优先级 更高的 100010;
>插件 优先级 的设置,为了 避免问题,可以 使用 yyMMddHH 这种模式;
>Slithice 内置 Action 是没有特权的:Slithice内置Action 也是可以被覆盖的 —— 当然,还是有 多少 的 特殊处理:
Slithice 内置 Action 优先级 最大值可以是 Int64.MaxValue;
自定义 Action 优先级 最大值可以是 Int32.MaxValue;
Slithice集群配置工具 单元测试界面

上面 展示的 是 单元测试界面;
>因为 时间比较急,所以 插件执行时需要的参数 这个功能 并没有实现;
>因为 时间比较急,所以 插件测试的是 服务端本地固有Action 的 测试,并不包括 服务端 可调度 的 Action 测试;
>因为 时间比较急,所以 性能压力 测试 的功能 并没有实现;
Slithice 是开源的
Slithice 的 作者 是 舒小龙;
Slithice 是开源的,任何 企业 或 个人 都可以 无偿 用于 商业 或 非商业 用途;
当然,作者希望 各位 能在 舒小龙 的 个人博客 或者 博客园 回复一哈:使用者名称+软件名称+邮箱(可选);
为什么要开源:
北京公司,在 抽烟室 和 马瑞礼(马哥) 聊天中,就聊到了这个话题,当时 马哥的回答 让自己 有所顿悟:
今天自己的代码 比起 几年前 成长了不少,当初的 王牌代码 在今天也 不过如此
—— 未来几年后,今天的代码 或许 在未来 也只是 “不过如此”;
所在的 角度 和 高度 在 提升,思想也就不一样 吧;
最最重要的是:王牌代码 给不了 一个人 未来,能成就一个人未来的 是 合作共赢 的力量;
Ps. 感谢那段时间 马哥 那次关于“开源”的讨论,也感谢那段时间 马哥 在人生 道路上 对我的 各种指点,还有那次的宽容,收益很深;
源码下载
舒小龙
2014-03-13 01:34
USE [LauraBlog]
GO
/****** Object: Table [dbo].[SL_TransferServiceConfig] Script Date: 03/19/2014 20:57:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[SL_TransferServiceConfig](
[FId] [int] IDENTITY(1,1) NOT NULL,
[FPrevServiceName] [nvarchar](250) NOT NULL,
[FServiceName] [nvarchar](250) NOT NULL,
[FTransferType] [nvarchar](150) NOT NULL,
[FTransferArguments] [ntext] NOT NULL,
[FTransferProbability] [int] NOT NULL,
[FHandleModules] [ntext] NOT NULL,
CONSTRAINT [PK_SL_TransferServiceConfig] PRIMARY KEY CLUSTERED
(
[FId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[SL_TransferServiceConfig] ON
INSERT [dbo].[SL_TransferServiceConfig] ([FId], [FPrevServiceName], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules]) VALUES (64, N'WebService_001', N'ConsoleWCFService_001', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:40000/SlithiceService/CalculateWinService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002')
INSERT [dbo].[SL_TransferServiceConfig] ([FId], [FPrevServiceName], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules]) VALUES (65, N'WebService_002', N'ConsoleWCFService_001', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:40000/SlithiceService/CalculateWinService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002')
INSERT [dbo].[SL_TransferServiceConfig] ([FId], [FPrevServiceName], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules]) VALUES (66, N'WebService_002', N'ConsoleWCFService_002', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:50000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_2_001|TestAction_2_002')
SET IDENTITY_INSERT [dbo].[SL_TransferServiceConfig] OFF
/****** Object: Table [dbo].[SL_SlithiceServiceConfig] Script Date: 03/19/2014 20:57:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[SL_SlithiceServiceConfig](
[FId] [int] IDENTITY(1,1) NOT NULL,
[FServiceName] [nvarchar](250) NOT NULL,
[FTransferType] [nvarchar](150) NOT NULL,
[FTransferArguments] [ntext] NOT NULL,
[FTransferProbability] [int] NOT NULL,
[FHandleModules] [ntext] NOT NULL,
[FTransferModules] [ntext] NOT NULL,
[FIsPrivate] [bit] NOT NULL,
[FEnable] [bit] NOT NULL,
CONSTRAINT [PK_SL_SlithiceServiceConfig] PRIMARY KEY CLUSTERED
(
[FId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[SL_SlithiceServiceConfig] ON
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (133, N'ConsoleCenterService', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:30000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_Center_001|TestAction_Center_002', N'', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (134, N'ConsoleSocketService_001', N'NetSocket', N'ServiceAddress=127.0.0.1;ServicePort=31000;TransferType=NetSocket;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState', N'', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (135, N'ConsoleSocketService_002', N'NetSocket', N'ServiceAddress=127.0.0.1;ServicePort=32000;TransferType=NetSocket;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState', N'', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (136, N'ConsoleWCFService_001', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:40000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002', N'', 1, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (137, N'ConsoleWCFService_002', N'NetWcfBinary', N'EndpointAddress=net.tcp://127.0.0.1:50000/SlithiceService/CalculateWinService;TransferType=NetWcfBinary;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_001|TestAction_002|TestAction_2_001|TestAction_2_002', N'', 1, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (139, N'WebService_001', N'NetWebService', N'WebServiceUrl=http://localhost:5447/SlithiceWebService.asmx;TransferType=NetWebService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState', N'TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (140, N'WebService_002', N'NetWebService', N'WebServiceUrl=http://localhost:5451/SlithiceWebService.asmx;TransferType=NetWebService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ServiceState|Slithice_ValueState', N'Slithice_ResetService|TestAction_001|TestAction_002|TestAction_1_001|TestAction_1_002|TestAction_2_001|TestAction_2_002', 0, 1)
INSERT [dbo].[SL_SlithiceServiceConfig] ([FId], [FServiceName], [FTransferType], [FTransferArguments], [FTransferProbability], [FHandleModules], [FTransferModules], [FIsPrivate], [FEnable]) VALUES (141, N'WebCenterService', N'NetWebService', N'WebServiceUrl=http://localhost:9183/SlithiceWebService.asmx;TransferType=NetWebService;', 100000, N'Slithice_About|Slithice_CenterService_DeleteSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfig|Slithice_CenterService_GetSlithiceServiceConfigs|Slithice_CenterService_SaveSlithiceServiceConfig|Slithice_HandleAndTransferModules|Slithice_InherentHandleModuleInfos|Slithice_InherentHandleModules|Slithice_ResetService|Slithice_ServiceState|Slithice_ValueState|TestAction_Center_003', N'', 0, 1)
SET IDENTITY_INSERT [dbo].[SL_SlithiceServiceConfig] OFF
/****** Object: Default [DF_SL_SlithiceServiceConfig_FServiceName] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FServiceName]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FServiceName]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FServiceName] DEFAULT ('') FOR [FServiceName]
END End
GO
/****** Object: Default [DF_SL_SlithiceServiceConfig_FTransferType] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferType]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferType]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferType] DEFAULT ('') FOR [FTransferType]
END End
GO
/****** Object: Default [DF_SL_SlithiceServiceConfig_FTransferArguments] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferArguments]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferArguments]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferArguments] DEFAULT ('') FOR [FTransferArguments]
END End
GO
/****** Object: Default [DF_SL_SlithiceServiceConfig_FTransferProbability] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferProbability]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferProbability]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferProbability] DEFAULT ((100000)) FOR [FTransferProbability]
END End
GO
/****** Object: Default [DF_SL_SlithiceServiceConfig_FHandleModules] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FHandleModules]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FHandleModules]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FHandleModules] DEFAULT ('') FOR [FHandleModules]
END End
GO
/****** Object: Default [DF_SL_SlithiceServiceConfig_FTransferModules] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FTransferModules]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FTransferModules]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FTransferModules] DEFAULT ('') FOR [FTransferModules]
END End
GO
/****** Object: Default [DF_SL_SlithiceServiceConfig_FIsPrivate] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FIsPrivate]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FIsPrivate]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FIsPrivate] DEFAULT ((0)) FOR [FIsPrivate]
END End
GO
/****** Object: Default [DF_SL_SlithiceServiceConfig_FEnable] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_SlithiceServiceConfig_FEnable]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_SlithiceServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_SlithiceServiceConfig_FEnable]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_SlithiceServiceConfig] ADD CONSTRAINT [DF_SL_SlithiceServiceConfig_FEnable] DEFAULT ((1)) FOR [FEnable]
END End
GO
/****** Object: Default [DF_SL_TransferServiceConfig_FPrevServiceName] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FPrevServiceName]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FPrevServiceName]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD CONSTRAINT [DF_SL_TransferServiceConfig_FPrevServiceName] DEFAULT ('') FOR [FPrevServiceName]
END End
GO
/****** Object: Default [DF_SL_TransferServiceConfig_FServiceName] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FServiceName]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FServiceName]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD CONSTRAINT [DF_SL_TransferServiceConfig_FServiceName] DEFAULT ('') FOR [FServiceName]
END End
GO
/****** Object: Default [DF_SL_TransferServiceConfig_FHandleType] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FHandleType]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FHandleType]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD CONSTRAINT [DF_SL_TransferServiceConfig_FHandleType] DEFAULT ('') FOR [FTransferType]
END End
GO
/****** Object: Default [DF_SL_TransferServiceConfig_FArguments] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FArguments]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FArguments]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD CONSTRAINT [DF_SL_TransferServiceConfig_FArguments] DEFAULT ('') FOR [FTransferArguments]
END End
GO
/****** Object: Default [DF_SL_TransferServiceConfig_FTransferProbability] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FTransferProbability]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FTransferProbability]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD CONSTRAINT [DF_SL_TransferServiceConfig_FTransferProbability] DEFAULT ((100000)) FOR [FTransferProbability]
END End
GO
/****** Object: Default [DF_SL_TransferServiceConfig_FHandleModules] Script Date: 03/19/2014 20:57:31 ******/
IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_SL_TransferServiceConfig_FHandleModules]') AND parent_object_id = OBJECT_ID(N'[dbo].[SL_TransferServiceConfig]'))
Begin
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_SL_TransferServiceConfig_FHandleModules]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[SL_TransferServiceConfig] ADD CONSTRAINT [DF_SL_TransferServiceConfig_FHandleModules] DEFAULT ('') FOR [FHandleModules]
END End
GO
『开源』Slithice 2013 服务器集群 设计和源码的更多相关文章
- 『集群』001 Slithice 服务器集群 概述
Slithice 服务器集群 概述 Slithice是做什么的 Slithice 是一个 跨平台 的 分布式架构 框架: 旨在简化 分布式开发 的开发难度,节省 开发成本 和 后期维护成本: 并提供 ...
- Gravitational Teleport 开源的通过ssh && kubernetes api 管理linux 服务器集群的网关
Gravitational Teleport 是一个开源的通过ssh && kubernetes api 管理linux 服务器集群的网关 支持以下功能: 基于证书的身份认证 ssh ...
- 『NiFi 节点本地流与集群流不一致导致集群加入失败』问题解决
一.概述 在某些极端情况下,某些 NiFi 节点信息会由于用户强行 disconnect from cluster ,而出现 local flow 与 cluster 的 flow 不同步的问题. 此 ...
- 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
转载:http://space.itpub.net/17007506/viewspace-616852 腾讯QQGame游戏同时在线的玩家数量极其庞大,为了方便组织玩家组队游戏,腾讯设置了大量游戏室( ...
- Nginx详解-服务器集群
Nginx是什么 代理服务器:一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端.应用比如:GoAgent,FQ神器. 一个完整的代理请求过程为:客户端首先 ...
- Linux服务器集群系统(一)(转)
add by zhj:虽然是2002年的文章,但读来还是收益良多.在 章文嵩:谈LVS及阿里开源背后的精彩故事 中LVS发起人及主要贡献者谈了LVS的开发过程及阿里开源的一些故事 原文:http:// ...
- zookeeper作为soa服务器集群的协调调度服务器
zookeeper作为soa服务器集群的协调调度服务器,当然自身也支持集群. ZooKeeper搭建系列集 ZooKeeper系列之一:ZooKeeper简介 ZooKeeper系列之二:ZooKee ...
- 大数据基础知识:分布式计算、服务器集群[zz]
大数据中的数据量非常巨大,达到了PB级别.而且这庞大的数据之中,不仅仅包括结构化数据(如数字.符号等数据),还包括非结构化数据(如文本.图像.声音.视频等数据).这使得大数据的存储,管理和处理很难利用 ...
- redis集群与分片(1)-redis服务器集群、客户端分片
下面是来自知乎大神的一段说明,个人觉得非常清晰,就收藏了. 为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型 ...
随机推荐
- java运算符总结
1.算数运算符:+.-.*./.%(加减乘除取余) 2.自增自减:++.-- 3.赋值运算符:=.+=.-=.*=./= 4.关系运算符:>.<.>=.<=.==.!= 逻辑运 ...
- Sublime Text3 C++及Java开发环境配置
一.C++开发环境配置 1. 下载MingW 2. 环境变量配置,系统属性->高级设置->环境变量,如果Mingw装在c盘更目录,其它自己思考 (1)PATH 变量值中加入 C:\Min ...
- 【转】App开发者必备的运营、原型、UI设计工具整理
一.运营类 1. APPVIEW,网址:http://lab.hakim.se/appview/ 帮助iOS 应用开发者追踪所有地区App Store最近的用户评论,可以按时间.评分.地区排序,缺点是 ...
- ubuntu16.04下安装openssh-server报依赖错误的解决方法
问题:系统重装后,安装和配置SSH,防火墙配置 #安装install openssh-server sudo apt install openssh-server -y 遇到问题: sudo apt ...
- Centos开机自启动redis
修改redis.conf,打开后台运行选项: # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note ...
- TCP连接与关闭
1.建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和S ...
- 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)
1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十 ...
- ZOJ 3232 It's not Floyd Algorithm --强连通分量+Floyd
题意:给你一个传递闭包的矩阵,mp[u][v] = 1表示u可以到达v,为0代表不可到达,问你至少需要多少条边组成的传递闭包符合这个矩阵给出的关系 分析:考虑一个强连通分量,如果这个分量有n个节点,那 ...
- Codeforces 234D Cinema
这题做的我好苦啊,编码调试整整搞了一个多小时,而且调到天昏地暗才调出来.. 回归正题,这题是一道本人做过的比较烦,比较无聊的题之一.题意是一个人,在m个影星里有k个喜欢的影星,然后给出n场电影,每场电 ...
- 链表面试题Java实现【重要】
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...