最近关注的一些核心技术问题

标签: 随笔文章 | 发表时间:2012-06-25 20:50 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
最近关注的一些核心技术问题,有相关资料的可以帮忙推荐。

MySQL数据库层面

关心MySQL读写分离集群和Cluster集群的选择策略,Cluster集群虽然具有完整的热备份能力,但是由于数据shading将导致很多问题,特别是跨数据节点的多表关联查询性能,在该问题解决后又出现的问题是对于数据集成和BI需求的满足上,是否一定要基于Hive模式来实现相应的需求?还是说多数据节点数据最终还得抽取到一个集中的ODS或DW中。对于读写分离集群,关注数据复制技术,虽然是基于BingLog的亚秒级日志复制,但是仍然关注对于多个读节点下,采用悲观事务模型下对于Master库的更新问题。还有就是如果采用读写分离集群,如何根据前期的业务量测算来考虑如何进行分区和分库,如果在分区和分库后master库仍然存在性能瓶颈的时候如何解决?这些都是问题。

在Cluster集群下,可以实现99.999 %的高可用性,完全避免单点故障,水平线性扩展。但是Cluster集群基于前端的一个内存数据库,对内存的消耗量究竟有多大?对于单数据节点的容量限制究竟是多少?另外网上谈到的数据行不能超过8K(不包括BLOB和text中的数据)限制是否有?暂时都还未知。现在对于大型的Cluster集群使用是否有案例?经初步了解淘宝现在基本仍然采用的是读写分离集群+分库的方式。

在读写分离集群下,如果使用MySQL-Proxy,那么对于路由或代理服务器本身在大并发下是否存在性能问题。如果不采用Proxy代理采用硬件负载均衡如何对Request请求进行负载均衡。我们在考虑的时候是想显示的来实现数据库连接的获取和均衡,避免Sql解析引起的性能消耗。那么必然涉及到类似于讨论tddl层的设计和实现。

MySQL和异构数据库之间的同步和数据集成问题,现在基本Oracle ODI 11g自带的mysql->oracle的知识模块可以很好的解决这个问题。具体性能如何还有待验证,但是基本清楚的是对于源和目标数据库都必须要采用源生的批量数据导入和导出接口。对于cluster库如何处理还没有进一步想清楚。

采用了MySQL集群数据库后,代理的集群数据库的管理和监控问题,数据库的日常运维和备份等问题都将面临重大考验。这也是很多时候开源虽然软件层面省了钱,后续运维监控往往投入更大。

SOA和ESB层面

对于ESB层面我们仍然最关心性能问题,在前两年的测试数据里面对于Oracle SOA 11g套件中的OSB基本可以达到2000-4000TPS的性能,但是基本没有太多的数据映射转换和路由等,而且数据量的传递基本也都在50K以下。那么对于在大并发,较大的数据量和消息体传输下OSB的性能仍然是必须要考虑的问题。对于大数据量我们采用的是类似Proxy的解决方案,包括ODI等各种解决模式,对于大并发则考虑的仍然基于硬件设备的负载均衡。

在ESB集群的构建模式下,完全可以避免N-1节点故障,由于ESB每次服务调用本身完全无状态,很多时候我们一直在考虑数据库本身是否需要完全分布式的问题。如果数据库层也完全分布式,则并发问题可以完全做到水平线性扩展,唯一的就是服务运行监控和分析需要抽取统一的ODS库,其他没有太多缺陷。

ESB本身是涵盖了消息中间件的内容,基于消息的集成往往更容易实现系统和组件间的彻底解耦,包括消息本身的持久化,重试,消息分段压缩,消息的订阅和发布机制等。服务集成和消息集成各自都有适用场景,在后续实施中重点加强消息集成和EDA事件驱动架构的使用。由传统的面向流程转换到面向流程+面向事件相结合。

对于ESB服务集成,服务模拟器,服务的自动化测试是另外重点考虑的内容,一切都是为了解耦下的并行,并行后的自动化以提升效率。

基于ESB集成模式下,业务系统完全组件化架构,组件间通过业务服务进行交互和集成,那么后续整个应用的集成,集成测试,集成的具体策略和顺序又成为重点考虑的问题。大系统的集成如何和每日构建和持续集成策略,配置管理更好的融合,形成完整的产品集成框架也显得更加重要。

大数据的集成是另外一个考虑的问题,对于数据服务和数据集成,采用ODI模式来实现,对于ODI模式本身不支持并发比较头疼。另外ODI模式下的性能是重点考虑的内容,研究ODI下的各种知识模块的使用策略和使用场景可以很好的解决ODI模式下的性能问题。

不管是使用OSB还是BPEL,不仅仅是说解决遗留系统的适配,路由,消息协议转换,更加重要的实例和日志的记录问题。跨系统或组件的集成必须对于每次消息或服务调用都用详细的日志记录,以方便后续对接口问题进行详细的日志分析和排查。经过我们测量,对于增加日志记录节点要额外消耗50%的时间,确实又是一个头疼问题。

应用设计的问题

当我们在谈云的时候首先想到的就是集中化资源,但是集中化后本身为了解决水平扩展问题又变化为分布式架构。在分布式模式下CAP模式不能兼得,自然引发出更多的需要考虑的问题。

首先是分布式事务的问题,对于分布式事务建议策略还是不需要采用太重的分布式事务管理框架,要区别对待我们对分布式事务的需求,如果BASE策略使用那么一定采用BASE策略来实现最终一致性。那么基于消息队列和消息中间件架构下的分布式事务替代模式完全是可以接受的。这种模式往往比简单的事务补偿模式更好。但是具体如何使用还需要根据业务场景来细化设计。

在分布式后带来的第二个问题就是前面讲到过的统计分析和BI需求的满足问题,特别是数据进行shading后如何实现统计分析需求。是否必须要采用HIVE等架构来解决分布式的查询统计分析?

原来我们进行的系统分析和设计都不是基于分布式和云架构进行的,如果我们基于分布式架构下,基于SOA服务集成我们必然面临更多的内容。包括整个应用如何进行组件划分,如何进行分库以最大化的降低模块间的耦合。模块间应该如何进行交互和提供服务?对于跨库的查询问题如何解决以解决性能问题?这些都是原来集中化数据库下不会遇到的问题。

对于分库后每个模块还是标准的三层或多层架构,但是模块间的交互和集成策略已经发生和很大的变化,系统的组件化架构将SOA思想引入到了系统内,但是即使对于一个业务组件,我们仍然强调在内部实现spring+OSGI模式的软总线架构,以实现模块内的进一步解耦和热插拔。对于OSGI本身是否已经稳定成熟还有待进一步考验。

===============================================================================================

为了强调平台化和复用,资源的集中化和调度,我们对原有的业务系统构建进行的水平分解和垂直分解,通过水平分解对可复用的内容进行平台化和下沉,通过垂直分解都系统进行模块化和解耦。这些确实最大的提升了平台化和复用程度,但是带来的问题确是原有紧耦合下单方可以完成的工作需要多方协同,多点集成才能完成。分解往往不是难点,最终的集成却异常复杂。正如做一个系统的架构设计一样,分解不是能力,分解后的组件能够很好的集成才是能力和价值。

   青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [最近 核心 技术] 推荐:

最近关注的一些核心技术问题

- - 人月神话的BLOG
最近关注的一些核心技术问题,有相关资料的可以帮忙推荐. 关心MySQL读写分离集群和Cluster集群的选择策略,Cluster集群虽然具有完整的热备份能力,但是由于数据shading将导致很多问题,特别是跨数据节点的多表关联查询性能,在该问题解决后又出现的问题是对于数据集成和BI需求的满足上,是否一定要基于Hive模式来实现相应的需求.

AIOps 核心技术和算法要点

- - IT瘾-dev
AIOps已经逐渐兴起,AI算法已较为成熟,使之与运维结合到了一起,下面列出AIOps相关技术和算法要点,有空了再展开写,懂大数据和机器学习的基本都知道各个组件及算法的作用. elasticsearch(支持时序). clickhouse(支持时序). -------------推荐阅读------------.

《云计算核心技术剖析》参考文献

- yu - 人云亦云
为了帮助大家阅读《云计算核心技术剖析》,在这里列出本书所有的参考文献. (1) 云计算,助推产业大发展. (2) 尼古拉斯·卡尔.《IT不再重要》.http://book.douban.com/subject/3215423/. (3) 《虚拟化与云计算》小组.《虚拟化与云计算》. (6) Google Storage for Developers初体验.

谈企业私有云PaaS层核心技术

- - 人月神话的BLOG
在这里简单谈下企业私有云paas平台所涉及到的核心技术内容. 首先谈下数据库,首先要意识到数据库的集中包括了两个方面的内容,一个是数据库服务器硬件的集中化,一个是数据本身的集中化. 对于类似oralce rac集群数据库实现的是数据库硬件,软件和数据的全部集中,但是数据库集群算不上真正的分布式数据库.

云计算8项核心技术全解读

- - 极客521 | 极客521
云计算的“横空出世”让很多人将其视为一项全新的技术,但事实上它的雏形已出现多年,只是最近几年才开始取得相对较快的发展. 确切地说,云计算是大规模分布式计算技术及其配套商业模式演进的产物,它的发展主要有赖于虚拟化、分布式数据存储、数据管理、编程模式、信息安全等各项技术、产品的共同发展. 近些年来,托管、后向收费、按需交付等商业模式的演进也加速了云计算市场的转折.

物联网核心协议,消息推送技术演进

- - 博客 - 伯乐在线
消息触达能力是物联网(internet ofthings, IOT)的重要支撑,而物联网很多技术都源于移动互联网. 本文阐述移动互联网消息推送技术在物联网中的应用和演进. 从开发的角度,无线接入是物联网设备端的核心技术,身份设备管理和消息推送技术是物联网云端的核心技术. 而从场景体验的角度,除了前者,还要包括手机的前端开发技术.

京东亿级商品搜索核心技术解密

- - 运维派
作者:王春明,现任京东搜索平台部负责人,2011年加入京东搜索团队,期间一直负责京东搜索引擎研发工作,主导了多次搜索架构升级工作保障其满足京东发展需求,擅长搜索引擎、高性能服务开发、分布式系统架构. 招聘: 京东搜索平台部木有有高级/资深搜索引擎研发工程师(C/C++)  、高级/资深算法工程师(C/C++)、高级/资深数据系统工程师(java)等职位,期待您的加入,一起打造弹性搜索平台.

高性能开发十大必须掌握的核心技术

- -
程序员经常要面临的一个问题就是:. 这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术. - I/O优化:零拷贝技术. - 缓存技术 && 布隆过滤器. 首先,我们从最简单的模型开始. 老板告诉你,开发一个静态web服务器,把磁盘文件(网页、图片)通过网络发出去,怎么做.

微前端框架核心技术揭秘

- - 腾讯CDC
2016年由ThoughtWorks提出了一种类似微服务的概念“微前端”(Micro Frontend),其后该概念在web领域逐渐落地,在前端技术领域出现了繁多的微前端框架. 本文将向你介绍有关微前端的概念、意义,带你走近微前端框架,揭秘那些“不为人知”的巧妙技术实现. 虽然它在2016年就被提出,但是直至今天,我们仍然只能描述它的轮廓,无法给它清晰下定义.