如何实现企业系统架构设计技术与互联网应用技术的结合

凤舞凰扬 2011-08-18
icewubin 写道
还有也请了解一下memcached的存储单元大小不能改变(不重启服务)的问题,这个才是大数据量存储中真正要命的,而很多人都不重视的问题。

一旦除了问题,还不知道是怎么回事,还会以为是memcached服务器内存不够了,会发现同样的memcached服务器,不同的数据缓存的命中率(其实是淘汰概率)不一样。

Memcache存储单元大小不能变对于缓存是有道理的,原理和磁盘存储,CPU缓存是一样的。
另外,我从来不是说memcache就是最好的,最合适的。我只是举出了这样一个产品。你完全可以使用oracle coherence这样你所谓的企业级成熟产品。

还有,你谈到了cache命中率,对于架构师来说,这才是真正的关键。cache的命中率直接决定了系统架构的效率以及缓存应用的效果。
凤舞凰扬 2011-08-18
icewubin 写道

关于第二点,当然是要看是什么样的企业,PHP的高级人才是很难招的,我们公司又不是没有尝试过,我们公司之前有相当长的一段时间内是PHP和java齐头并进的,而且是PHP起家的,一路过来的部门经理说,当时就是因为中高PHP的人非常难招,迫不得已才用java的。

从另一个角度来说,由于分工越来越细,JS、CSS、和部分的HTML都是由前端工程师包办了,前台的后端(html输出和ajax服务端)、后端服务(有些人喜欢叫做中间件)这两层往往是是可以在一起的,用java很容易做到,PHP就不行,搞个自动任务还要依赖cron,而我们公司的dba和运维对历史上产生的无法维护的cron(写cron的人离职了,这东西很难接手),深恶痛绝。

上面一段写的有点问题,说岔了,再补充一下,由于前端工程师的细分,后端更重注重服务响应的速度、稳定性、后端和后端之间的通讯的一些问题,如果用PHP挡在所谓中间件的前面,没什么太大的意思,浪费人力而已,用java可以大大减少后端和后端所谓中间件的复杂度。我知道肯定有相当多的人和我意见相左,不过这个讨论开的话,话题太广。

第三点,你说我不了解?那你对我了解多少?做人不要太武断。我现在的公司,每天的访问量是亿级的。
同样,我对你也不了解,你说的大规模并发分析的帖子给个url我来瞻仰瞻仰。

互联网企业比较普遍用PHP,因为PHP快速,便捷,并且轻量级。也有不少使用Java,但是稍微大点的互联网企业没有人使用hibernate。
后端服务和中间件是两码事...
至于职责划分,跑题了,我们就不讨论了。
最后,如果你每天的访问量是亿级,那根本就不是企业系统了。你完全可以告诉我们是什么样的系统。
凤舞凰扬 2011-08-18
icewubin 写道

1)你现在举个几个少数例子,就断言传统企业都有这个需求就是在拍脑袋,你先想想自己是不是经常在拍脑袋,或者说有很多隐含的边界条件自己都没有表达出来,其实你说的不过是国有大型而已。国内难道没有小的传统企业了?小企业的需求就不算企业级了么?

2)我不知道你在公司中属于什么职位,我可不认为来JE的技术人员中,能有多少比例的人幸参与中国铁建、南航的架构设计,并且最终凭借架构设计拿下订单。

3)对于一个技术人员,在没有实践的基础上,空谈架构,你以为这个技术人员通过培训就能参与中国铁建、南航的架构设计了么?

   第一问题,我只好无语...
   第二个问题,呵呵,我不想打广告。不过凭借架构设计拿下订单,你这句话就有歧义了,而且非常不合适。
   第三个问题,不知道是不是针对我,不会认为我参加TOGAF培训去参与那些项目的架构设计吧?唉,我该说啥呢...想了好久,还只能无语
凤舞凰扬 2011-08-18
icewubin 写道

我有点明白了,你说的“企业架构”是你嘴中的企业架构,我们外人当然是不懂的,不如你说说你嘴中的“企业架构”的定义是什么?

作为“外人”,我的观点很简单,如果银行和股票交易系统都算是企业级么?需求天差地别,架构怎么会可能一样?

  你什么时候听人把股票交易系统描述成企业级系统了?我看你的回复越多,我怎么感觉我越来越无语了呢?
  给你贴个wikipedia关于企业级信息系统的解释吧,http://en.wikipedia.org/wiki/Enterprise_Information_System,觉得不爽,再自己谷歌翻译。
ltian 2011-08-18
凤舞凰扬 写道
ltian 写道
   首先不知道您所谈的"架构"是什么层次的"架构"。
最高层的架构谈的架构原则和概念模型,面向领域的架构分为业务架构、数据架构、应用架构和技术架构,针对具体软件分层架构主要是该软件的技术架构,所以不知道你谈的哪种架构。
   在企业架构方面,有流行的TOGAF(The Open Group Architechture Framework)方法论,按照该方法论,应道首先根据业务愿景建立业务架构,根据业务架构制定数据架构和应用架构,最后根据应用架构和数据架构中的技术需求建立技术架构。概要如下:

架构愿景定义全面的架构知道原则,目的、目标和所需要的特征。
业务架构定义业务战略、治理、组织和关键业务过程。
数据架构描述了组织(公司)的逻辑和物理数据资产的结构以及数据管理资源。它是信息系统架构的一部分。
应用架构为要部署的单个应用系统提供一个蓝图,以及应用之间的交互,它们与组织(公司)的核心业务过程之间的关系。它是信息系统架构的一部分。
技术架构描述了支持业务、数据和应用服务开发的逻辑软件和硬件能力。它包括IT 基础设施、中间件、网络,通信、处理(processing)、标准等。

由于不了解互联网领域,不知道这种方法论是否适用。但我认为,方法论应该是通用的吧,只不过不同领域架构之中的组件和业务技术需求不同而已。

所以,楼主提出的命题可能不成立。

   呵呵,楼上千万不要和我谈TOGAF,尤其不要从书本上粘贴东西啊,否则我都不好意思再说了(我想这么说你也能猜到我是哪家公司做什么的)... 谈虚的,谈理论我也非常在行的,不过这里是纯粹的技术人员场地,所以只谈实的东西。

不能将理论指导实践,恐怕没有真正理解理论,这是其一。
我知道你是哪家公司,我和贵公司平台的负责人人探讨过你们的平台技术架构,贵公司平台技术架构在访问控制方面、组织机构模型方面虽然不错,都还不够完善,希望你能给出更多的帮助。
学了理论却无法指导实践,反而说理论很虚的人,是学着马列反马列的修正主义者,要不得,希望你不要辜负了好理论啊。
ltian 2011-08-18
凤舞凰扬 写道
icewubin 写道
还有也请了解一下memcached的存储单元大小不能改变(不重启服务)的问题,这个才是大数据量存储中真正要命的,而很多人都不重视的问题。

一旦除了问题,还不知道是怎么回事,还会以为是memcached服务器内存不够了,会发现同样的memcached服务器,不同的数据缓存的命中率(其实是淘汰概率)不一样。

Memcache存储单元大小不能变对于缓存是有道理的,原理和磁盘存储,CPU缓存是一样的。
另外,我从来不是说memcache就是最好的,最合适的。我只是举出了这样一个产品。你完全可以使用oracle coherence这样你所谓的企业级成熟产品。

还有,你谈到了cache命中率,对于架构师来说,这才是真正的关键。cache的命中率直接决定了系统架构的效率以及缓存应用的效果。


讨论这些具体的缓存之类的技术组件是否好用,是技术架构的一个很小的方面,况且从架构师的个人实践出发也是不够的,gartner之类的公司有很多关于这些技术组件的评估报告和最佳实践调研,我想至少比个人的最佳实践权威吧,还让专业的人做专业的事情吧。企业架构的目的是什么,我想作为自认为是专家的圈主应该更懂,无需我解释了。oracle coherence适用还是memcache适用不是一拍脑袋凭技术感觉就可以定的,有很多约束要考虑的,包括投资,成本,使用的场景、技术力量、售后服务等等。这就好比,宝马跑的快,性能好,但是还是有很多人选择奇瑞QQ。因此,这不是企业架构的主要问题,这是解决方案层面的问题。解决方案会针对具体问题进行研究的。建议圈主还是要把企业架构和解决方案的范围和相互关系搞清吧。总之,你给出的企业架构定义,很多人都不明白,不是你有问题,就是我们大家有问题。当然,你有专家称号,肯定是我们有问题,我响应你的号召,不能接受你的定义,咱就退出这个圈子,最后一次发帖,得罪了。
icewubin 2011-08-18
凤舞凰扬 写道
icewubin 写道

1)memcache不成熟的地方我说了不止一点,请不要避重就轻,我看你喜欢咬文嚼字,不如你先定义一下什么叫做“成熟”,“成熟”在互联网和企业级的定义是各不相同的,我这里说的“成熟”就是指企业级的成熟。

  什么叫企业级成熟?要运用在什么场景下才是企业级成熟?是不是大公司出的商业产品才叫企业级成熟?那么开源产品有没有你所谓的企业级成熟?
  我告诉你,淘宝也用Memcache,阿里巴巴也在用,腾讯拍拍也在用,也有很多企业系统也在用。告诉我们,什么场景下才是企业级成熟?莫非银行、金融、保险?

啊呀,您终于有点说出了你心中的“企业级成熟”的定义,什么叫做企业级成熟,至少在碰到了软件使用上的一些问题,你可以免费或付费找到解决问题的厂商,例如mysql和linux都有专门的收费的公司提供咨询服务,Memcache有么?

按照你的逻辑定义,是否只要是阿里系的公司在用、腾讯拍拍在用的技术或者软件,就能用在中国的企业级项目上了?这话说出去,IBM、埃森哲、oracle都要笑了。
icewubin 2011-08-18
凤舞凰扬 写道

icewubin 写道

2)我有说squid是作负载均衡的么?我有说我们公司没有用ngix?请你不要排脑袋随意臆想行不行?我说的需要apache辅助,已经是ngix、webcache(这一层是squid缓存结构)、netscaler之后的,多个为了复用某2台app而已。这里也请不要比重就轻,squid用于缓存在高负载下也是有稳定性问题的,至少曾经有过,不清楚目前的官方版本是否fix了这个bug。

   呵呵,算是我误解你的意思,但你要先看看你自己的话先吧
icewubin 写道
squid成熟么?在我们公司的一个c大牛改写之前,经常性崩溃的(一般不能在高负载下撑过1个月不重启);某些情况下,某些跳转需求还需要apache来辅助,很多时候为了少装一个apache还不得不向squid妥协。

呵呵,Squid高负载下有稳定性问题,告诉我哪个软件在高负载下就没有稳定性问题?你指的高负载又是多大的负载?Squid本身就属于互联网应用的技术产品了,应对一般企业级互联网化访问负载根本是绰绰有余。当然了,我相信会有更合适的产品,那真还要请互联网技术公司的架构师们建议了。这更是我出此主题的初衷。

其实很简单,squid的一个bug而已,fix完成后,就没问题了,你以为是什么?而且在fix完这个bug之后,能够长时间(超过1年)不需要重启,就是证明我所说的高负载不是不稳定的理由。

“哪个软件在高负载下就没有稳定性问题?”啊呀,你又开始咬文嚼字了啊,我说的是高负载,我可没说超过设计承载能力的负载,你理解错了吧。
icewubin 2011-08-18
凤舞凰扬 写道

icewubin 写道

3)memcache不支持持久化,可以算半个问题,因为memcache本来就设计成不持久化的,不支持failover,就是因为我有后续的话,就等你接茬了,我们公司就碰到过这样的真实的事情,IDC机房的某个机房员工操作机器上机柜的时候,脚碰了电源,一台比较关键的memcache服务器断电了,由于不支持failover,导致整个网站各个应用连锁反应,进入半雪崩状态(数据库负载进入恶性循环,各app之间的调用越来越慢,导致app应用也进入恶性循环),虽然这台机器经过联系立马重启了,由于不像TT那样支持持久化,缓存填充需要8个小时,这8个小时中,整站一直处于一种不稳定的状态。

缓存不持久化算半个问题?我真无语了。你电脑CPU的二级缓存会持久化么?缓存干嘛要持久化啊?你谈到的断电导致缓存数据丢失,重新loading需要很大代销,导致数据库负载的恶性循环。不错,这是架构层次问题,但是和memcache以及缓存本身无关。你的所谓memcache可以持久化,是希望能够快速将缓存数据恢复,从而避免给后台IO存储带来直接的压力。可你却不懂得去从另外一个角度思考,如何弱化峰值。这种问题处理的一个基本思路是,保证一定压力下异步从数据库(或者IO存储)恢复数据,边使用边恢复。(因为你根本没有必要全部恢复所有缓存才去使用)这种处理方式和MQ断电恢复持久性消息的原理是一样的。

1)你还是没搞清楚我在表达什么,在很多方面,使用TT或者redis都比memcache好,间接的说明memcache没有你说的那么成熟、完美。

2)刚才你也说了,“应对一般企业级互联网化访问负载根本是绰绰有余”,1亿数据规模以下,TT的性能不比memcached差多少,有自带持久化功能,接口完全兼容memcached为什么有好东西你不用呢?

3)你罗里吧嗦说了很多我都知道的东西,我就问你一句话,在不增加很多开发工作量的前提下,你如何解决memcached单点故障问题?

或者你会说这根本就是个伪命题,但是你要知道,为什么互联网企业允许可以慢慢填充缓存?难道此时响应速度下降是传统企业都能容忍的么?我一直强调需求背景,国内企业怎么可能有相同的需求背景?怎么可能有相同的高可用需求?

互联网企业都不一样,传统企业怎么会一样?高可用的级别不一样,架构设计就是差别很大的。例:阿里云的数据库一年宕机时间的指标是不能超过5分钟,2个DBA。
icewubin 2011-08-18
凤舞凰扬 写道

icewubin 写道

memcache是做什么用的呢?顾名思义,缓存用的,如果挂了呢?很多网站都没有很好的考虑这个问题的。后续又能接很多茬,如果你想继续深入单点故障和可降级服务的话。

   你谈得很好,很多架构师只会用产品,没有考虑可用性、伸缩性、可靠性及健壮性。我个人非常乐意大家把这些问题说出来,把经验分享出来。如果可以,看我建议你开多个主题,就这些架构问题进行更深入的讨论。

你起的头,应该是你先根据需求场景,多开主题。
Global site tag (gtag.js) - Google Analytics