MySQL MHA高可用架构介绍
介绍了当前主流高可用软件MHA的工作流程和切换演示(模拟从库延迟,主库宕机后,数据自动补齐) 视频地址:http://edu.51cto.com/lesson/id-44865.html 本文转自hcymysql51CTO博客,原文链接: http://blog.51cto.com/hcymysql/1574902,如需转载请自行联系原作者
上一篇说到为什么要使用事件驱动,但是只有概念是不够的,我们要代码呀!记得脸书的老总说过: "Talk is cheap, Show me the code!"
事件顾名思义就是一件事情发生了,比如我要上头条,这不是一个事件,这事一个Command, HeadCommand, 而我上头条了这就是一个事件HeadedEvent,事件就是一件事情已经发生了。 好,先来一个伪代码
public void Head()
{
var NewsPaper = new NewsPaper("南都娱乐");
NewsPaper.WriteToHeader("汪峰");
RaiseEvent(new HeadedEvent {Name = "汪峰"});
}
所以我们只需在代码里RaiseEvent就可以了。
其实很简单,因为我们要实现的是同步的事件,我们只需要找到所有处理这个事件的实现类,然后调用所有就可以了。
public interface IEventHandler<TEvent> where TEvent : Event
{
void Handle(TEvent e);
}
public class HeadedEvent:Event
{
public string Name { get; set; }
}
如果国际章的妈妈关注这个Event, 我们就实现一个GuoJiZhangMotherEventHandler
public class GuoJiZhangMotherEventHandler : IEventHandler<HeadedEvent>
{
public void Handle(HeadedEvent e)
{
Console.WriteLine(e.Name+", Are you kidding me?");
}
}
如果我等屁民也关心这个事件的话,我们只需要再实现一个 PiMingEventHandler
public class PiMingEventHandler:IEventHandler<HeadedEvent>
{
public void Handle(HeadedEvent e)
{
Console.WriteLine(e.Name+", Guo Ji Zhang is your last wife?");
}
}
看,我们可以任意增加关注事件的代码,不用修改原来的代码吧,说好的OCP没骗你吧? 那么问题来了,发出事件的人和接受事件的人怎么联系上的?在现实世界中,我们都是订阅报纸来看头条知道的,但是代码里我们就需要一个协调者了。如是我们就需要一个EventBus, 直接上代码吧
public void Head()
{
var NewsPaper = new NewsPaper("南都娱乐");
NewsPaper.WriteToHeader("汪峰");
RaiseEvent(new HeadedEvent {Name = "汪峰"});
}
private void RaiseEvent(HeadedEvent headedEvent)
{
EventBus.Publish<HeadedEvent>(new HeadedEvent { Name = "汪峰" });
}
EventBus找出所有Handle这个事件的实现类,调用对应的Handle方法,我们可以通过Castle或者任何注入框架轻易的实现
public class EventBus
{
public static void Publish<T>(T concreteEvent) where T: Event
{
var handlers = _container.ResolveAll<IEventHandler<T>>();
foreach (var handle in handlers)
{
handle.Handle(concreteEvent);
}
}
}
好了,哥只负责帮汪老师上头条,上完我发出了事件通知,谁关注谁自己处理去,我的代码也不用改。
我代码实现完了,如果各位还不知道如何实现一个同步的事件驱动架构,那拜托你们找个漂亮的妹子来问我。事件驱动架构我就只能帮你到这里了。
本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/p/4286111.html如需转载请自行联系原作者
王德水
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。