四种java企业级应用程序的架构

article/2025/9/27 9:56:15

1、传统三层架构(all in one项目)

传统三层架构大致可以分为表现层,业务层和持久层(数据访问层)。其中表现层负责接受请求和转发请求。业务层负责处理请求(注:事务管理,日志记录等AOP类型的操作均封装在这一层)。持久层主要负责数据库与实体之间的操作。

struts典型的mvc三层架构:模型层,视图层,控制层。

SpringMVC中的MVC指的是什么:当一个请求到达服务器时,由中央控制器DispatcherServlet(控制层)查找要访问的controller,然后controller->调用service->调用dao,之后将获取的数据返回到jsp页面(视图层)。

即:严格来说在SpringMVC中控制器是DispacterServlet,模型层是controller(即该模型层又可以看成一个MVC架构),视图层是jsp页面。

另外,利用框架可以简化各层的开发:表现层使用SpringMVC或者struts2,持久层使用Mybatis或Hibernate,使用spring管理表现层,业务层和持久层三层之间的关系。

2、集群架构(属于水平拓展)

由于传统的三层架构中存在许多问题,比如业务层中的不同模块占用系统资源相差太大,导致占用系统资源,可以使用集群解决问题。(相当于备份多个文件,多台服务器反问的是同一个项目资源,集群架构的目的也是为了系统资源的高可用性。)

在集群架构中存在一个重要的角色就是反向代理服务器,他的任务是实现负载均衡,接收用户请求,转发到目标服务器,其中反向代理服务器可以使用nginx实现(简单来说也就是一个实现负载均衡的算法)。

说明:

(1)集群架构相当于把同一个项目部署到多个服务器上(相当于复制备份),然后通过负载均衡服务器nginx将请求分别均衡的派发到不同的tomcat服务器上,实际上不同服务器上运行的是同一个web项目。

(2)大部分能企业通过nginx实现负载均衡算法。

  • 软件层面负载均衡项目:nginx, apache的httpd;

  • 硬件负载均衡器:f5.

(3)已经存在两台服务器,如果其中一台服务器的挂掉了,第二台服务器是正常的状态,负载均衡服务器会将所有请求转到第二台服务器,所以访问第二台服务器没有问题。

(4)如果你在访问第一台服务器时,正在购物,此时已经有多件商品被加入购物车了,且购物车数据是通过session存储的,倘若此时你访问的这台服务器挂掉了,那么负载均衡服务器将你的请求派送到另一台服务器上,那么此时你的购物车里面的数据依然还存在,因为集群的服务器之间的session是共享的。

(5)不同的Tomcat服务器之间如何做到session共享?

tomcat服务器本身就支持session共享,但是需要在集群的tomcat服务器的配置文件server.xml中做相同的如下配置:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"><Manager className="org.apache.catalina.ha.session.DeltaManager"            expireSessionsOnShutdown="false"otifyListenersOnReplication="true"/><Channel className="org.apache.catalina.tribes.group.GroupChannel"><Membership className="org.apache.catalina.tribes.membership.McastService"address="228.0.0.4"port="45564"frequency="500"dropTime="3000"/><Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"address="auto"port="4000"autoBind="100"selectorTimeout="5000"maxThreads="6"/><Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"><Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/></Sender><Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/></Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/><Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>

好处:高可用。

弊端:如果该项目很大,且并发量高,包含多个可拆分的模块(子系统)那就不适用集群架构了。

3、分布式架构(垂直拆分)

分布式架构特点:多个模块完成一个功能,每个模块又可以搭建集群,从而实现高可用。

说明:

分布式架构与集群架构的区别:

(1)集群架构是将同一个完整的项目部署到多台服务器上,通过负载均衡完成请求的派发。而分布式架构是将项目拆分成不同的模块(子系统),然后将不同模块存放在不同的服务器上,所以分布式架构很大的一个特点就是分开还能合作完成一个请求。(注:现在云计算就有分布式的的概念。)

(2)简单的分布式架构仍然存在问题,如果其中一个tomcat服务器挂掉了,则其中一个模块则不可运行了,所以考虑到分布式集群架构,即将一个大系统分成多个独立的模块,部署到多个服务器上,每个模块再考虑存放在多个服务器上形成一个集群,如此才能实现高可用性。如下图:

好处:高可用,效率高。

弊端:模块之间的关系不易于管理。

4、微服务架构(垂直划分)

根据产品的业务功能模块划分服务的种类,客户端可以通过基于HTTP或者RPC的方式调用微服务,目的是为了降低所产生的性能开销。同时每个模块仍然可以搭建集群,从而实现高可用。

4.1 SOA架构

是当服务过多时,服务之间调用关系复杂混乱,不利于维护。

使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计系统之间的调用关系,调用次数。(由于dubbo阿里公司已经停止更新,建议使用springcloud)。

4.2 Dobbo

dubbo体系结构图:

如下是一个典型的基于SOA电商项目架构图:

说明:如果服务与服务之间存在调用,dobbo可以通过名字去鉴别因为编码时每个模块之间都有调用关系,且该关系也被dobbo掌握。

4.3 SpringCloud

SpringCloud是一个基于 Spring Boot 实现的服务治理工具包;Spring Boot 专注于快速、方便集成的单个微服务个体;Spring Cloud 关注全局的服务治理框架。

解释一下这张图中各组件的运行流程:

  • ① 所有请求都统一通过 API 网关(Zuul)来访问内部服务。

  • ② 网关接收到请求后,从注册中心(Eureka)获取可用服务。

  • ③ 由 Ribbon 进行均衡负载后,分发到后端的具体实例。

  • ④ 微服务之间通过 Feign 进行通信处理业务。

  • ⑤ Hystrix 负责处理服务超时熔断。

  • ⑥ Turbine 监控服务间的调用和熔断相关指标。

SpringCloud和Dobbo的区别:

(1)Dubbo的注册中心可以选择zookeeper,redis等多种;Spring Cloud:的注册中心只能用eureka或者自研。

(2)Dubbo通过rpc协议远程调用,直接通过socket通信,效率高;SpringCloud通过http协议调用。


http://chatgpt.dhexx.cn/article/ebtiiicj.shtml

相关文章

企业网站源码PHP附企业小程序源码

时间不会为任何人停留&#xff0c;企业网站开发也不例外。随着时代的变化&#xff0c;趋势也在不断变化&#xff0c;品牌的数字化形象现在比以往任何时候都更加重要。重点已转向移动&#xff1b;但是&#xff0c;网站开发同样重要。      企业网站源码技术选型      演…

企业应用程序单点登录

企业每天都依赖于各种企业应用程序&#xff0c;包括云和本地应用程序。这意味着用户必须经常输入更多密码才能访问这些应用程序并完成他们的工作。为了提高用户的工作效率、减少密码疲劳并使身份管理更有效&#xff0c;您的组织需要部署高效的 SSO 解决方案。 AD360 提供企业 …

公司企业小程序怎么开发自己的小程序

随着移动互联网的快速发展&#xff0c;小程序已经成为企业展示自身产品和服务的重要渠道。那么公司企业小程序怎么开发自己的小程序呢&#xff1f;本文将为大家详细介绍小程序开发的步骤。 第一步&#xff1a;明确需求 开发小程序前&#xff0c;需要先明确自己的需求。是想要…

企业微信本地开发小程序。

1. 我们在开发的时候&#xff0c;第一步需要点击应用去企业微信里面拿取code调用登录接口传给后端&#xff0c;后端返回一个agenId给前端。但是我们需要本地调试&#xff0c;一个前端如果不能通过F12进行调试模式是看不到接口报错信息和不方便页面布局调试的。 2. 开始尝试复制…

企业管理软件,真的以业务流程为中心?

&#xff08;1&#xff09;理念支撑否 自从1911年以《科学管理》为标志以来&#xff0c;现代企业科学管理已经发展了近百年&#xff0c;叠床架屋已经体系成熟。到了80年代&#xff0c;已经体系建设到了战略级和战略绩效级&#xff0c;迈克尔波特的竞争战略、卡普兰的平衡记分卡…

怎么开发企业微信小程序?

企业微信小程序是一种基于微信平台的小程序&#xff0c;主要用于企业内部管理和沟通。开发企业微信小程序可以帮助企业提高工作效率和协同能力&#xff0c;同时也能够提升企业形象和品牌价值。本文将介绍如何使用小程序制作工具来开发企业微信小程序。 一、了解企业微信小程序…

【小程序专栏】个人及企业资质该如何注册小程序?

笔者最近打算写一个比较完整的"小程序零基础"的开发专栏&#xff0c;本文首先为大家介绍一下该如何注册小程序。目前小程序是可以面向个人进行注册的&#xff0c;小程序目前注册审核制度还不是那么XX&#xff0c;大家可以抓住这个机会进行学习。目前个人、企业、政府…

企业小程序开发步骤【教你创建小程序】

随着移动互联网的兴起&#xff0c;微信已经成为了很多企业和商家必备的平台&#xff0c;而其中&#xff0c;微信小程序是一个非常重要的工具。本文将为大家介绍小程序开发步骤&#xff0c;教你创建小程序。 步骤一、注册小程序账号 先准备一个小程序账号&#xff0c;在微信公…

企业/公司如何初创建一个小程序

详细可在小程序官方文档>介绍>小程序接入指南里面的产品定位及功能介绍里查看 1、注册小程序帐号 在微信公众平台官网首页&#xff08;mp.weixin.qq.com&#xff09;点击右上角的“立即注册”按钮。 点击立即注册之后进入页面&#xff0c;如下图&#xff1a; 2、帐号信…

公司企业如何设计微信小程序?

​很多公司企业在制作小程序的时候都会考虑一个事情&#xff0c;就是如何设计微信小程序。有些公司企业希望把小程序设计得非常炫酷、抓人眼球。那么问题是&#xff1a;公司企业微信小程序的设计是否做得越酷炫、越抓人眼球就越好呢&#xff1f; 答案&#xff1a;非也&#xf…

企业微信配置部署小程序流程

1. 进入企业微信后台&#xff0c;点击进入应用管理。 2. 点击创建应用&#xff08;支持小程序&#xff09;。 3. 上传应用logo图片&#xff0c;应用名称&#xff0c;可见范围&#xff08;选择可见成员&#xff09;。 4. 完成以上操作&#xff0c;可获取agentId&#xff0c;secr…

企业注册小程序流程

注册流程前要提前准备好企业资料&#xff0c;然后进行注册过程. 一、资料准备 账号注册资料 1、公司邮箱&#xff08;注册过程中会收到微信官方一个注册确认邮箱&#xff0c;需要点击确认&#xff09; 2、企业名称&#xff08;企业注册证上的一致&#xff09; 3、营业执照注…

公司企业小程序怎么创建?

如今&#xff0c;公司企业小程序已经成为了一种新兴的电子商务模式&#xff0c;很多公司企业通过创建自己的小程序&#xff0c;实现企业展示、产品展示、服务预订、在线交易等功能&#xff0c;为企业提供更好的营销方式和更优质的服务体验。下面是关于公司企业小程序怎么创建的…

企业如何开发自己的小程序

小程序是一种轻量级的应用程序&#xff0c;被广泛用于社交娱乐、电商购物等领域。对于企业而言&#xff0c;开发自己的小程序可以为客户提供更加个性化的服务&#xff0c;提高品牌认知度和用户忠诚度。本文将介绍企业如何开发自己的小程序&#xff0c;并通过一个具体的案例来说…

微信怎样开发小程序【公司企业小程序开发】

现在很多公司企业都有自己的小程序&#xff0c;没有小程序的公司企业也会寻找开发小程序的途径。那么今天就给大家简单介绍微信怎样开发小程序&#xff0c;希望对需要开发小程序的公司企业有帮助。 一、注册小程序账号 有一个小程序账号是必须的&#xff0c;小程序账号可以在…

公司企业微信小程序创建步骤

随着新一代互联网的发展&#xff0c;小程序已经成为当今社会不可或缺的重要部分。它的简单易用&#xff0c;公司企业小程序是一种基于微信平台构建的应用程序&#xff0c;旨在为企业提供灵活便捷的营销服务。关于公司企业微信小程序创建步骤&#xff0c;可分为以下几个部分&…

微信小程序注册流程(企业注册)

小程序注册流程 1.注册准备 未注册过小程序的邮箱 企业名称、营业执照号、开户名称、开户行、对公账户、开户地点、电话 注册地址&#xff1a;微信公众平台 ​​ 2.注册流程 第一步&#xff1a;登录微信公众平台&#xff0c;点击小程序 第二步&#xff1a;填写邮箱信息…

企业版小程序申请步骤

1&#xff0c;打开微信公众平台官网&#xff0c;若没注册过请点击立即注册。 2&#xff0c;进入以后选择小程序&#xff0c;点击进入。 进入以后需要填写注册邮箱&#xff0c;注意&#xff1a;一个邮箱只能申请一个小程序。 4&#xff0c;然后登录自己的邮箱&#xff0c;点击链…

企业应用程序集成简介

本文是我们名为“ Spring Integration for EAI ”的学院课程的一部分。 在本课程中&#xff0c;向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来&#xff0c;您将深入研究Spring Integration的基础知识&#xff0c;例如通道&#xff0c;转换器和适…

C语言--冒泡法实现

#include <stdio.h>int main() { int i,j,a[10]; printf("Please input ten numbers: \n"); for(i0;i<10;i) //输入10个数组元素scanf("%d",&a[i]); for(i0;i<10-1;i) //n个数要进行n-1趟比较{ for(j0;j<9-…