【大型互联网应用轻量级架构实战の一】轻量级架构概述

news2024/11/25 6:59:58

1、轻量级架构概述

1.1.1、前言

当下,互联网应用呈高速发展的趋势,要想不被市场淘汰,就必须与时间赛跑,故而, 就成了所有互联网公司产品的特征,只有率先推出产品,才能获取主动权。

1.1.2、开发模式

基于快速开发的诉求,那么怎样才能实现快速开发呢?以下将介绍几种互联网项目中常用的开发模式。

  • 渐进式开发
    即将一个长期的大需求分解为若干个短期的小需求,只考虑近几个月或几个星期的需求,针对短期进行设计,而后开发,这就是所谓的“渐进式开发模式”
  • 瀑布式开发
    瀑布式开发是通过设计一系列阶段顺序展开的。从需求分析到产品发布和维护,每个阶段都会循环反馈,若其中某一环节出现了问题,就需要返回到上一阶段并进行修改。虽然这种开发模式稳定性好,但相对渐进式来说,开发周期实在是太长了,假若一款产品的开发时间长达数年,谁又能保证几年后该产品还能被用户所接受呢?
  • 敏捷式开发
    敏捷式与渐进式类似,敏捷开发将产品的开发周期划分为若干个“迭代(各种小版本,例如手机app时常要进行更新)”。一般一个迭代为4周或2周,开发团队全力完成当前迭代所确定的目标。在迭代之后,会发布一个可用的版本,交付给用户使用。

1.1.3、 开源技术

即开放源代码的技术。例如Tomcat、Mysql...对于初创的互联网公司来说,使用开源技术可以节省很大一笔技术开支。同时,开源技术的源代码是公开的,互联网公司可以根据自身开发需求对其源码进行分析;但是,能看到源码并不意味着可以解决所有问题。开源技术在技术支持上并不能与闭源技术相提并论,原因在于开源技术依赖于开源社区的支持(俗称靠爱发电),而闭源技术是花钱买的,有专业的技术团队,他们会提供售后

1.1.4、微服务

微服务架构通俗来说就是分工合作,相比于敏捷式的开发,微服务架构侧重于将整个软件划分为若干不可分割的原子服务,例如A司有一个互联网商城项目,该项目可以划分为用户信息模块、商品管理模块…每一个模块作为一个原子业务交由不同的团队进行开发,这些业务之间由良好的接口和契约进行连接(约定大于配置)

1.1.5、高并发

大型互联网应用往往有着非常高的并发量,过高的并发将会带来以下问题:

  1. →用户角度
    页面加载慢、功能操作后响应时间长、功能无法使用等。
  2. →开发者角度
    接口超时、线程池耗尽、数据库连接池耗尽、数据库获取连接时间长、缓存雪崩、导致其他系统功能和业务受到影响等。

如何抵御突如其来的流量洪峰,是每个运维人员需要思考的问题!
其中常用的一种解决方案是:将经常需要访问的数据缓存起来,这样在下次查询的时候就能快速地找到这些数据。

1.2、传统企业级应用技术的不足

       JAVA,作为一门受欢迎的编程语言,在经历了20多年的发展后,已然成为了企业级应用开发的首选语言。java以其稳定性著称,特别是 “Write Once,Run Anywhere” 的特性,非常符合互联网企业 快速 推出产品的需求。

       但是,传统的java企业级所使用的技术,并不能适应当前互联网公司的发展需求,其不足之处总结如下:

1.2.1、规范不实用

       Java企业针对企业级应用市场推出的规范称为JavaEE.
       传统的JavaEE系统框架是臃肿、低效和脱离现实的,当时的SUN公司推崇以 EJB 为核心的JavaEE开发方式。关于EJB,其官方的说法是:
关于EBJ的详细内容请参考该文章

商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。J2EE对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件。

传统JavaEE应用的开发效率是低下的。应用服务器厂商对各种技术的支持并没有真正统一,而出现这些问题的原因,是JavaEE和EJB的设计都是"以规范为驱动"的。但这些规范并没有针对性的解决问题

1.2.2、学习成本太高

       传统JavaEE的很多规范都是违反 “帕累托法则”(二八法则) 的,是指花较少的成本(10%-20%)解决大部分问题(80%-90%)。EJB的问题就在于,它违背了这个法则——为了满足少数情况下的特殊要求,给大多数使用者强加了不必要的复杂性,使开发者难以上手(EJB的编程模型非常复杂,要使用EJB需要继承非常多的接口,而这些接口在实际开发中并不是真正为了解决问题)
通俗来说:就是EJB为了能满足少部分要求,使日常的80%-90%一般要求的满足变得更加复杂

1.2.3、不够灵活

       EJB依赖于容器,所以EJB在编写业务逻辑时是与容器耦合的,编程模型不够灵活。因为编写程序需要依赖于具体的容器实现,所以"Write Once,Run Anywhere"变成了"一次编写,到处重写"当容器变化时,相应的容器实现逻辑也得变化,特别是实体bean,基本上迁移了一个服务器,就需要重新编写,相应的测试工作量也增加了。

1.2.4、发展缓慢

       由于EJB规范中对实体映射的定义过于宽泛,导致没有统一的标准,每个厂商的标准都不尽相同。这在一定程度上加大了开发的难度,使得移植变得困难。
       since 2013年6月发布JavaEE7以来,出现了很多新兴技术,如NoSql、容器、微服务和无服务架构,但它们都未能包含在JavaEE中。

1.3、Lite框架简介

       Lite框架开源地址

       以下是Lite框架的部分信息

在这里插入图片描述

       Lite,如其名,lite意味着开源、简单、轻量。

1.3.1、轻量级架构

       Lite框架是一套轻量级的web框架,基于Lite可以轻松实现企业级应用。Lite具有非侵入性,依赖的东西非常少,占用资源也非常少,部署简单,启动快速,比较容易引用。
       Lite底层基于spring框架来实现bean的管理

1.3.2、符合二八定律

  • Lite旨在通过较少的成本(10%-20%)解决大部分问题(80%-90%)
  • Lite专注于解决企业应用中的场景问题。如对象管理、事务管理、认证与授权、数据存储、负载均衡、缓存等......




本系列内容均来自柳伟卫老师著作《大型互联网应用轻量级架构实战》,结合个人的一些观点进行解读,仅为个人学习记录,如有侵权,敬请联系,本人将第一时间删除系列内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型时代下的paper生存= =

第一类:PEFT类论文 (我还挺喜欢的,不知道自己什么时候可以搞出这种工作 (为什么中英文穿插,利于自己写论文:) COMPOSITIONAL P ROMPT T UNING WITH M OTIONC UES FOR O PEN - VOCABULARY V ID…

构建数字时代下的必要防线 消除医疗行业数据安全建设“盲区”

4月7日,由厦门市卫生健康信息学会和厦门大学附属第一医院、厦门服云信息科技有限公司举办的医疗数据安全学术研讨会顺利开展。 作为国内云原生安全领导厂商,安全狗除了协助举办此次活动,还以数据安全治理专家的身份参与演讲分享。 厦门服云…

全网最详细,Jmeter性能测试-性能进阶, 无界面命令运行CLI模式(六)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 如果使用jmeter.bat…

代码随想录算法训练营第四十一天-动态规划3|343. 整数拆分 ,96.不同的二叉搜索树

343整数拆分,有两种解法,一种是数学的方法,利用当f>4时,2*(f - 2)2f - 4 > f的性质,将所有的因子都拆成3,最后的余数再乘进去。另外一种是动态规划,把前面的数拆了…

算法---文件的最长绝对路径

题目 假设有一个同时存储文件和目录的文件系统。下图展示了文件系统的一个示例: 这里将 dir 作为根目录中的唯一目录。dir 包含两个子目录 subdir1 和 subdir2 。subdir1 包含文件 file1.ext 和子目录 subsubdir1;subdir2 包含子目录 subsubdir2&…

PHP快速入门11-文件操作,附写入文件、文件重命名等20个高频使用案例

文章目录前言一、文件操作介绍二、 20个文件操作的例子2.1 打开文件并写入数据2.2 读取文件中的一行数据2.3 读取文件中的一个字符2.4 读取整个文件内容2.5 向文件写入内容2.6 将整个文件读入一个数组中2.7 删除文件2.8 重命名文件2.9 复制文件2.10 判断是否为文件2.11 判断是否…

【致敬未来的攻城狮计划】RA2E1环境搭建点亮发光二极管

开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯和 瑞萨MCU (瑞萨电子 (Renesas Electronics Corporation) ) 联合发起的「 致敬未来的攻城狮计划 」的第 2 天,点击查看活动计划详情 ! 开发环境搭建 开…

React styled-components(三)—— 高级特性

styled-components 高级特性样式继承嵌套设置主题样式继承 新建 Demo.js 文件: import React, { Component } from react import styled from styled-components;const CustomStyle styled.divp { color: red;} const ContextBox styled(CustomStyle)width:…

Tableau-创建环状图:使用2个饼图

步骤 1:创建饼图 在“标记”下面,选择“饼图”标记类型。将分类拖到颜色。将任务总数拖到角度。再拖动一次任务总数,放到标签。根据需要调整饼图大小。 步骤 2:切换到双轴图表 右键点击任意一个字段,创建-->计算…

3年功能测试无情被裁,3个月学习自动化测试重新开始........

前言 不知不觉在软件测试行业工作了3年之久,虽然说我是主做的功能测试,但是我也一直是兢兢业业的呀,不曾想去年7月份无情被辞的消息让我感到一阵沉重。我曾经一直坚信自己的技能和经验足以支撑我在这个领域的未来,但现实却告诉我&…

考研数据结构——表达式的转换用栈实现表达式的概述

一、用表达式实现中缀表达式转后缀表达式 把括号里的符号移到括号外 二、用栈实现中缀表达式转后缀表达式 1、遇到字母写下来 2、遇到符号加入栈中 3、遇到成对括号才出栈 4、当前读取运算符要小于等于栈顶运算符优先级则出栈 从左向右扫描 三、表达式方法实现中缀表达式转…

Shader Graph9-世界空间、物体空间、相机空间、切线空间

一、World Space世界空间 在下用的Blender软件,新建了一个平面,中间的黄色小圆点表示的世界空间的原点,在世界空间的物体的位置,都是相对于这个原点来说的,红色箭头表示x轴,绿色箭头表示y轴,蓝…

算法 二叉树2 || 层序遍历 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111 二叉树的最小深度 222.完全二叉树的节点个数

102 二叉树的层序遍历 队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。 而这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。 迭代法: /*** Definition for …

springboot和vue写个小项目

遵循“约定优于配置”的原则,只需要很少的配置或使用默认的配置。 能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。 提供定制化的启动器Starters,简化Maveni配置,开箱即用。 纯)java配置,没有代码生成&#xf…

4月11日,每天30秒,昨夜今晨一览无余/我国首条“西氢东送”管道纳入国家规划/国际机构:中国经济蓬勃复苏,展现广阔投资

-> 昨天的世界(点击进入) <- http://mp.weixin.qq.com/s?__bizMzU4MzQ4Mzk0Nw&mid2247488724&idx1&snd19817d3c7fd9aeb521052090eb439e0&chksmfda90390cade8a864965c805b86acd253f5d74368ae8767b7f00b80d4af5bcc42feef7635641&scene21#wechat_redir…

Qt扫盲-Qt图表类综述

Qt支持图表类综述一、概述二、图表类型1. 折线图和柱状图2. 面积图和散点图3. 柱状图4. 饼图5. 盒须图6. 烛台图表7. 星座图图表三、坐标轴 Axes四、图例五、与图表交互1. 动态绘制数据2. 深入数据3. 缩放和滚动4. 鼠标悬停六、主题一、概述 Qt Charts支持创建时尚的、交互式的…

Jetpack Compose之对话框和进度条

概述 对话框和进度条其实并无多大联系&#xff0c;放在一起写是因为两者的内容都不多&#xff0c;所以凑到一起&#xff0c;对话框是我们平时开发使用得比较多的组件&#xff0c;像隐私授权&#xff0c;用户点击删除时给用户提示这是一个危险操作等&#xff0c;进度条的使用频…

一文吃透Elasticsearch

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址 如果访问不了Github&#xff0c…

【自制】我造了一台 钢 铁 侠 的 机 械 臂 !【硬核】

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。

当我跑步时在想什么

最近好几个人对我说&#xff1a;你瘦了。这是非常激励人心的反馈&#xff0c;验证了跑步是有效的。只要今天开始锻炼&#xff0c;最胖的时候就算过去了&#xff0c;余生都会越来越美。前几天佛山50km徒步&#xff0c;带小朋友走了一半。下午有运动会&#xff0c;就没有走完了。…