enode框架step by step之框架的物理部署思路
enode框架step by step之框架的物理部署思路
enode框架系列step by step文章系列索引:
- enode框架step by step之开篇
- enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现
- enode框架step by step之saga的思想与实现
- enode框架step by step之框架的总体目标
开源地址:https://github.com/tangxuehua/enode
上一篇文章,介绍了enode框架的总体目标,以及如何实现高吞吐、低延迟、高可用、无单点问题的实现思路。本篇文章,我们再分析一下其他一些需要考虑的问题。我发现写文章挺累的,费时费脑经,但我会坚持下去。本文主要分析一下enode框架的物理部署:
enode框架的物理部署思路:集群的web站点+分布式缓存和存储
集群的概念:多台机器做相同的业务,对外如一台机器在做事情一样,集群中任意一台机器挂了没有影响,因为其他机器还在工作;集群的机器要访问的数据的设计,我觉得一般有两种思路:
- 集群中每台机器都用自己的数据。数据一致性是通过每台机器之间的数据同步来实现,这样做的主要难题是数据同步的延迟带来的数据不一致的问题;但是好处是,因为没有任何共享数据,所以一台机器挂了完全对整个系统没有任何影响。因为这样的设计相当于是完全同时由很多独立的且没有共享任何数据的机器在同时工作,当然是最能容灾的了;
- 有一台机器存放数据的共享数据,集群中每台机器都访问这些共享数据。这种设计的好处是数据不用同步了,没有数据延迟带来数据不一致的问题;但是坏处是,有单点问题,万一共享数据的服务器挂了不是麻烦了。幸好,现在有很多开源的成熟的分布式缓存和分布式存储的产品,如memcached, redis这些都是分布式的缓存,可以有效的避免单点故障的问题,虽然挂了的单台memcached服务器会影响一部分数据的读取和写入,但是至少不会给整个系统带来挂掉的后果;同样分布式存储如mongodb,也能做到这样的效果。这两种产品,在分布式部署方面我还没有任何实际经验,平时工作中也不曾遇到过,所以今后还需要好好的学习和实践。
分布式的概念:一个业务在不同的物理点上做,比如web服务器(处理UI逻辑)、应用服务器(处理业务逻辑),这两个节点分开部署在不同的机器上,共同完成一个业务;分布式的特点是,每个节点都不能挂,否则这个业务就不能完成了;当然,我们可以给分布式中的每个节点都做集群处理,这样可以降低分布式系统的单节点故障; 但是因为分布式要完成一个业务,内部要夸网络通信如调用远程服务,所以性能肯定比没有调用远程服务的设计要低。一般我们不会采用分布式,用分布式都是被逼的,比如以下情况下,我们可能会采用分布式的设计:
- 一个系统,有几大块业务,相互比较独立,为了让每块业务都能独立设计和发展,我们会把这些不同的业务模块分开设计与实现;比如一个电子商务网站的交易中心和商品中心,可以独立分开设计;
- 数据量太大,没办法存放在一个点,所以只能分开存储;这种情况我们一般会把数据分区,不同分区的数据放在不同的点;如数据库的分库分表,还有一些分布式缓存如memcached、redis,还有如mongodb这样的支持分布式存储的文档型数据库;
- 一个系统,不同的层次使用完全不同的技术实现,比如由于历史原因,我们要对一个系统改造,但是这个系统的业务逻辑很复杂,而且都是用c++写的,我们不敢随便动;但是我们希望可以在UI上给这个系统重新设计以带来更好的用户体验,比如原来是用c++写的界面,现在希望通过WPF这种更高级更炫开发维护成本更炫的技术来实现。那么我们就会在同一个系统使用不同的语言和技术来实现。这种情况下,我们可能需要将c++实现的业务逻辑通过远程服务暴露出来,比如通过WCF暴露,WCF远程服务本身可以由c#编写,然后c#调用managed c++,然后managed c++调用unmanaged c++。从而实现业务逻辑的远程服务暴露;而在UI层,我们可以使用c#+WPF的方式来实现,然后UI层调用WCF远程服务。这种架构就是因为一个系统中不同层次因为使用了完全不同的技术而需要使用分布式的情况。
enode框架step by step之框架的物理部署思路的更多相关文章
- ENode 1.0 - 框架的物理部署思路
开源地址:https://github.com/tangxuehua/enode 上一篇文章,介绍了enode框架的总体目标,以及如何实现高吞吐.低延迟.高可用.无单点问题的实现思路.本篇文章,我们再 ...
- enode框架step by step之消息队列的设计思路
enode框架step by step之消息队列的设计思路 enode框架系列step by step文章系列索引: enode框架step by step之开篇 enode框架step by ste ...
- enode框架step by step之Staged event-driven architecture思想的运用
enode框架step by step之Staged event-driven architecture思想的运用 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件 ...
- enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现
enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现 上一篇文章,我给大家分享了我的一个基于DDD以及EDA架构的框架enode,但是只是介绍了一个大概.接下来我准备用 ...
- enode框架step by step之saga的思想与实现
enode框架step by step之saga的思想与实现 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode enode ...
- enode框架step by step之框架要实现的目标的分析思路剖析1
enode框架step by step之框架要实现的目标的分析思路剖析1 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode ...
- EF框架step by step(7)—Code First DataAnnotations(2)
上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...
- EF框架step by step(6)—处理实体complex属性
上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中 ...
- EF框架step by step(7)—Code First DataAnnotations(1)
Data annotation特性是在.NET 3.5中引进的,给ASP.NET web应用中的类提供了一种添加验证的方式.Code First允许你使用代码来建立实体框架模型,同时允许用Data a ...
随机推荐
- Qt 如何处理拖放应用程序参数时,中国
你用 Qt 我们开发的应用程序.用户拖放文件到您的 exe 在.启动应用程序,在这个时候, main() 功能参数可以接收中国.如何正确处理它?非常easy,码如下面: QTextCodec *cod ...
- BZOJ 3282 Tree Link-Cut-Tree(LCT)
题目大意: 给定N个点以及每一个点的权值,要你处理接下来的M个操作.操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和.保证x到y ...
- 我的MYSQL学习心得(十二)
原文:我的MYSQL学习心得(十二) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYS ...
- pyqt学习总结
一.学习来由: 近期一段时间,应朋友的须要,完毕一款抓取软件.一般而言,python是我比較熟悉的语言,又有丰富的抓取和解析模块,所以果断选择之. 而这远远不是重点,后台程序在工作做常常写,所以比較熟 ...
- 【 D3.js 入门系列 --- 9.6 】 生产的包图
我的个人博客是:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 打包图( Pack ).用于包括与被包括的关系,也表示各个对象的权重, ...
- WebService使用JSON格式传递笔记+JQuery测试
原文WebService使用JSON格式传递笔记+JQuery测试 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以 ...
- jquery-制作选项卡
强大的jquery-制作选项卡 最近在学习jquery,特地把今天写的一个选项卡源码贴出来.只是做只是梳理,大神们请不要吐槽,如果有更好的方法,欢迎指点.谢谢. css <style> ...
- .NET大型B2C开源项目nopcommerce解析——项目结构
.NET大型B2C开源项目nopcommerce解析——项目结构 编写本文档是为了向程序员说明nopcommerce的解决方案结构,亦是程序员开发nopcommerce的居家必备良书.首先nopcom ...
- C#可扩展编程之MEF
C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻 前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在 ...
- Andy Williams 《Love Story》
where do i beginto tell a story of how great a love can bethe sweet love story that is older than th ...