准备花点时间,简单回顾一下我们企业站点的10年演化,主要从技术的角度。其实从业务的角度也有很多可以谈的,这个暂时不做太多展开,涉及到技术要点时会简述业务特征。
在我加入公司时,公司业务已经上了轨道,并且还在爆炸式增长中,公司本身已经在nasdaq上市。整个系统的架构分server,client,enterprise site三部分。server集群由c++开发而成,管理各种资源(包括文件共享,语音,视频,白板,远程控制,讨论组,投票,Chat等等)的协作. Client是上述资源的展示,它是一个单独或嵌在浏览器的应用程序。而客户是通过web site入口启动client的。
看起来,web site貌似没啥技术含量, 只是一个入口而已嘛。可是10几年过去了,web的发展出乎大多数人的意料,随着web2.0,3.0的迅猛发展,而今构架在J2EE平台上的web site完全可以扩展和取代client甚至是server。
目录:
一 php时代
php是CGI进程模型的,意味着每个请求要新建一个CGI进程,这个对server的消耗实在有点大。当用户越来越多,请求越来越密集时,PHP已经无法抗住。
另外一个方面,由于历史的原因,php代码抽象的程度不够高,当时相当多的代码是php和html混合,可维护性比较差,无法应对潮水般涌来的新需求。当一个新员工接手面对数千行逻辑和显示都高度混杂的页面时,真是令人发狂的场面。
技术团队决定整体平台向java迁移。这其实是一个困难的决定,当时团队中java方面的高手并不多,90%都是只听过,没用过或者写过几行helloworld。就是在这种情况下,大家毅然决定边维护php版本,一边学习java开发。
二 java时代(传统架构)
经过艰苦的努力,java版上线了,得力于开源社区的给力,我们用上了Struts和ibatis,
整个系统是参考j2ee blue print范例写的。总体上封装了很多公用功能到common组件包,比如DB访问接口,Email发送组件包,文件操作组件包等,比起上一个版本,很多基础功能已经做了一定程度的封装。
mvc框架和velocity模板的使用,使得复杂页面展现和维护不再变得艰难痛苦无比。性能上,也有了不小提高,web server crash的次数大大减少。当然,由于引入了weblogic,成本也高了一大块;不过相比于蓬勃发展的业务,似乎算不了什么。
上线那一刻,我们很欣慰,这一年多的辛苦是值得的。我们似乎一下轻松了很多。
不过这样的轻松,没有维持太久。仅仅一年之后,我们重新陷入到新的困境中。
主要有三个问题:
1)随着数据量大增,oracle也终于步履蹒跚,查询慢,页面响应慢
2)频繁的jvm outofmemory,weblogic restart,严重时客户无法使用站点服务。
3)Service层,Struts actionForm越来越臃肿,各种随手写的XXXActionForm,XXXXVO,XXXServiceImpl满天飞,搞到最后原作者也记不清是干嘛用的了。经常不同的业务团队,在埋头写功能有交叉的模块代码......
DB团队开始大规模优化SQL语句;架构师团队开始定期开会研究jvm参数调整,error log分析来消除潜在代码隐患;同时对Service进行清理,分派任务到各小组和个人。
这些都起到了一定的作用,解决了一些问题(比如通过jvm参数调整,log分析Fix了很多潜在的bugs,很多废弃的Service代码被移除),但是总觉得是疲于奔命穷于应付。
像sql优化,是有限度的;当频繁进行亿级数据查询,怎么优化也快不到哪里去了。
三 java时代(引入前沿架构)
1)对某些并发特别高的业务,前面使用Nginx做负载均衡
2)对密集读的业务,引入cache center
3)使用Spring框架管理各业务bean对象,spring mvc也取代了Struts
4)引入分布式数据访问层,透明地进行分库分表,解决数据访问慢的问题
这里实际使用中,涉及太多的问题。比如
a)当单台Nginx也成为瓶颈,怎么办?[
前端使用lvs转发到多台nginx]
b)cache与db的一致性问题,使用什么策略?
[
1 写db成功才继续写入cache
2 如写入cache失败,第一次读只能命中DB,在读时写回cache
3 分布式cache的一致性:
a. 共享cache法. 禁止local cache. 这是memcached,redis的做法.采用集中式cache。这是目前使用最广泛的分布式cache策略。集中式易于管理,容易扩容.
b. 写无效法(write-invalidate). 这个是指local cache更新局部cache时,除了用写直达法更新后端存储,还需要作废其他处理机的本地cache中的相关内容. swarmcache和oscache在集群环境下采用的就是这个办法。
c. 播写法(write-update). 如名字所说.有更新时广播,同步复制(更新)到各个机器的local cache. JBossCache可以做到这一点。但是节点太多,广播的代价就过大。
d. 目录表法. 简单的说就是有一张目录表表示某一项内容在各个节点缓存中是否存在和存在状态. 写的时候用这些信息来避免写操作. 可以采用多级缓存体系,第一级用oscache,第二级用memcached.
]
c)Spring内部怎么划分业务的边界,实则是service ben的查找和互相通讯的问题
d)DDAL 怎么控制扩容时数据迁移? 全量数据和增量数据分别怎么处理?跨区处理怎么解决?(读取结果进行排序,分组问题)
e)关键字搜索使用什么技术? 搜索结果怎么排序,聚合?
每一个问题几乎都可以写一篇论文。有时间慢慢补上来。
四 java时代(服务平台架构)
分享到:
相关推荐
During these years it has proved to be a solid and valuable solution for building enterprise web applications. Wicket core developers have done a wonderful job with this framework and they continue ...
4. **MySQL**: As the chosen database management system, MySQL provides efficient storage and retrieval of data, ensuring the site can handle large volumes of user information and queries. 5. **Web ...
Acknowledgments: Over the years, several students and colleagues have helped us prepare this solutions manual. Special thanks goes to HongGang Zhang, Rakesh Kumar, Prithula Dhungel, and Vijay ...
gensim-4.1.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.zip
IMG_6610.jpg
原理图与PCB设计.iso,值得一看
同城上门喂遛宠物系统,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。 前台: - 首页:展示系统的概览信息。 - 爱宠天地:提供爱宠人士交流、学习讨论的平台。 - 宠物:展示宠物相关的信息。 - 宠物资讯:提供宠物行业相关的新闻、资讯、科普文章等。 - 个人中心:用户可以登录后进入个人中心,管理个人信息,查看宠物预约记录、服务订单、评价等。 后台: 管理员角色: - 个人中心:管理员可以管理个人信息,修改密码等。 - 管理员管理:管理员可以对其他管理员的信息进行增删改查等操作。 - 用户管理:管理员可以对用户的信息进行增删改查等操作。 - 爱宠天地管理:管理员可以管理交流论坛的帖子、评论,审核内容等。 - 宠物管理:管理员可以管理宠物的基本信息,包括宠物种类、照片、描述等。 - 宠物预约管理:管理员可以处理用户的宠物预约请求,安排服务人员等。 - 宠物资讯管理:管理员可以管理宠物行业相关的新闻、资讯、科普文章等。 - 基础数据管理:管理员可以管理基础数据,包括宠物种类、服务类型、服务时长、价格等。 - 轮播图信息:管理员可以管理轮播图信息,包括添加、修改
静态综合实验报告模板.docx
USB_UVC_Timing.v
【最新版】 ISO 21207-2015.rar
英语培训课程-词汇语法基础
ai产品经理面试高频100题
PW1X-PHP+XLS_1个通用条件工资成绩等通用查询系统电脑网页版版(Gb2312)_2024最终版
精品水果线上销售网站,系统包含三种角色:管理员、商家、用户,系统分为前台和后台两大模块,主要功能如下。 前台功能: 1. 首页:展示水果的推荐信息和促销活动。 2. 公告:展示网站的公告信息。 3. 招商加盟:介绍招商加盟的政策和流程。 4. 联系我们:提供联系方式和在线留言功能。 5. 网站介绍:详细介绍网站的特色和服务内容。 6. 商家:用户可以查看商家的信息和合作方式。 7. 水果:用户可以浏览水果的详细信息。 8. 个人中心:用户可以管理个人信息、订单记录、收货地址等。 9. 购物车:用户可以将感兴趣的水果添加到购物车。 后台功能: 用户: 1. 个人中心:管理个人信息。 2. 公告管理:管理公告信息,包括添加、编辑、删除公告等操作。 3. 水果管理:管理水果信息,包括添加、编辑、删除水果等操作。 管理员: 1. 个人中心:管理个人信息。 2. 基础数据管理:管理基础数据,包括水果分类、产地信息等。 3. 公告管理:管理公告信息,包括添加、编辑、删除公告等操作。 4. 水果管理:管理水果信息,包括添加、编辑、删除水果等操作。 5. 单页数据管理:管理网站单页信息,
解决间歇性不上纸
google play store 安卓apk安装包,内置google服务 在网络情况允许的情况下,就可以直接使用 Google Play 是一个在线商店,用户可以在其中找到喜爱的应用、游戏、电影、电视节目和图书等。 它向全球数十亿用户提供 200 万款应用和游戏, 迄今为止为开发者带来了超过 1200 亿美元的收入。 我们在开发者与全球数十亿用户之间建立纽带,同时投资于平台、工具、服务和营销机会,为在全球范围内推广应用和游戏提供支持。
内容概要:本文详尽介绍了云原生技术,不仅涵盖了基本概念和技术架构的介绍,还深入讲解了云原生的核心元素,例如容器化、服务网格、不可变基础设施与声明式API的应用。文章指出云原生是一种结合了特定技术和理念的方法论,旨在提高系统适应性、可管理性和可观测性,并加快想法到市场的进程(I2M)。同时,文中探讨了云原生的实际实施路径,强调自动化的价值,以及在现代云计算环境下持续交付的价值链。另外,文章也提到了学员在参加云原生训练营时可能面临的挑战,鼓励他们通过不断的探索与实践来深化对于这一领域的理解。除此之外,它提供了关于kube-proxy的工作机制解释,指出了最佳的学习方式即先阅读官方文档建立基础知识,再深入探究社区分享的经验,最后达到对技术的全面掌控。 适合人群:本文主要面向希望通过学习云原生及其相关技术实现自我技能提升的开发者和工程师群体;尤其是那些希望了解如何利用云平台特性来优化自身产品和服务的个人。 使用场景及目标:对于正在寻找构建、迁移至云端解决方案的人来说,本篇文章有助于他们理解如何设计云优先的软件架构;同时也能帮助企业更好地评估自身IT战略是否符合未来发展方向的要求。其终极目的是为
## 介绍 气候风险指数是基于历史气候资料和未来气候预测结果,通过判断极端天气气候事件致灾阈值、结合社会经济数据及实际灾害损失分析,采用科学的方法对单一或综合气候灾害风险进行的定量化评价。 ## 一、中国各省市气候风险数据的介绍 中国各省市气候风险数据主要包括极端低温、极端高温、极端降雨及极端干旱日数的相关数据,可为研究者进行气候风险评估、应对气候变化策略的制定及区域发展提供数据支持。 数据年份:1993-2023年 数据样本:31个省份,共962个省级样本;227个地级市,共6950个地级市样本 ## 二、数据指标
关注有更多资源,私信免费的