企业级软件开发技术

企业级软件开发技术

  • J2EE产生背景

    1
    2
    J2EE是Sun公司为了满足多层体系结构企业级应用开发的需求,在J2SE的基础上,根据企业级应用的各种需求,提出的一种标准。
    背景:互联网的兴起,企业级应用的需求,跨平台的需求,分布式计算的需求(随着企业应用的复杂性增加,需要将应用逻辑分布在不同的服务器上,以提高性能、可靠性和可伸缩性。)
  • J2EE设计的考虑

    1
    J2EE设计考虑到系统的可维护性和可扩展性进行了分层架构,包括客户层,Web层,业务层和企业信息系统层。考虑到业务逻辑的不同将系统划分为不同的组件,如JavaBeans、Servlet、Enterprise JavaBeans等,组件时可重用的,可替换的。
  • J2EE针对分布式的处理,在分布式上的相关技术

    1
    2
    3
    4
    J2EE平台本质上是一个分布式的服务器应用程序设计环境,是一个专为分布式计算设计的平台,它提供了一套标准化的规范和接口,使得开发者能够构建分布式、多层次、高可用性、可扩展的企业级应用。

    与分布式相关的技术:
    EJB、JMS、JPA、JTA、JAX
  • J2EE的组成

    1
    2
    3
    四层模型
    客户层-Web层-业务层-企业信息系统层
    JavaApplet-JSP|Servlet|EJB|数据库
  • J2EE和MVC的关系

    1
    2
    3
    J2EE是一个Java平台,提供了一系列规范和接口,用于开发多层次、分布式、可扩展、安全的企业级应用。J2EE包含了多个组件和技术,如Servlets、JavaServer Pages、Enterprise JavaBeans、Java Message Serice(JMS)。
    MVC是一种设计模式,用于将应用分为三个核心部分:模型,视图和控制器。这种分离有助于管理复杂的应用,并使代码更易于维护和扩展。
    J2EE与MVC架构的关系在于,J2EE平台提供了实现MVC模式所需的技术和组件。J2EE应用中,模型可以时JavaBeans,Session Beans或实体Beans。视图通常是JSP页面、HTML、XML或JSON实现。控制器通常是Servlets实现。J2EE平台提供了构建MVC架构所需的所有工具和架构。
  • Web容器和ejb容器的区别

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Web容器主要负责运行和管理Web应用程序,特别是基于Servlet和JSP的技术,Web容器处理客户端的HTTP请求,并将这些请求分发给相应的Servlet或JSP页面进行处理。Web容器的主要作用包括
    1.请求处理,接受客户端的HTTP请求,并将其分发给相应的Web组件(如Servlet)
    2.生命周期关系,负责Servlet的创建,初始化,服务请求,销毁等生命周期管理。
    3.会话关系,管理用户会话,包括会话的创建,维护和销毁。
    4.安全性:提供用户身份验证和授权等安全功能
    5.日志记录:记录Web应用程序的运行记录
    6.部署和配置:负责Web应用程序的部署和配置管理。

    EJB
    EJB容器主要负责运行和管理企业JavaBean,提供事务管理,安全性,并发控制,分布式计算等服务。
    EJB容器的主要作用包括:
    1.事务管理:提供声明式事务管理,确保业务操作的原子性,一致性,隔离性和持久性。
    2.安全性:提供细粒度和安全控制
    3.并发控制
    4.生命周期管理
    5.远程调用
    6.资源池
    1
    2
    3
    Web容器主要处理HTTP请求和Web相关的功能,而EJB容器主要处理企业级业务逻辑和分布式服务。
    Web容器运行Servlet和JSP,而EJB容器运行会话Bean、实体Bean和消息驱动Bean。
    部署单元不同,Web容器部署Web应用程序(WAR),EJB容器部署企业应用(EAR),其中可能包含EJB(JAR)和Web(WAR)模块。
  • JSP

    1
    2
    3
    4
    5
    6
    JSP是一种动态网页技术,JSP技术允许开发者将Java代码和HTML标记语言混合在一起,以创建动态的、基于Web的应用程序。JSP页面在服务端执行,生成HTML或其他格式的内容,然后发送到客户端浏览器进行显示。
    工作原理:
    1.用户请求jsp页面,浏览器发送请求到服务器。
    2.如果是第一次请求改jsp页面,服务器会将jsp文件转换为一个servlet(java类),然后编译这个java类。
    3.服务器调用这个Servlet的service方法,处理请求并生成响应。
    3.Servlet生成HTML内容,并将其作为响应发送回客户端浏览器。
  • Servlet

    1
    2
    3
    4
    5
    Servlet是Java提供的一种用于扩展服务器功能的技术。它是运行在Web服务器或应用服务器上的Java类,用于处理客户端请求并生成响应。Servlet通常用于处理HTTP请求,但它们也可以用于处理其他类型的协议。
    1.当Web服务器(Tomcat)启动或第一次请求到达时,Servlet容器回加载并实例化Servlet。
    2.初始化
    3.处理请求,service()
    4.销毁
  • EJB

    1
    2
    3
    4
    5
    EJB是一种Java EE技术,用于开发和部署分布式、面向对象的业务逻辑。将业务逻辑从客户端界面和底层数据访问代码中分离出来,使得业务逻辑可以独立于应用程序的其他部分进行开发,部署和扩展。
    三种Bean
    1.会话Bean,代表客户端的一次操作或会话,有状态:Bean的状态改变,接下来的方法调用中,客户端会出现同样的状态,无状态:不用保存客户端的状态,方法调用之间没有存储信息,不会保存会话状态、
    2.实体Bean,代表持久化数据,通常与数据库中的表行对应,用于表现O/R映射。
    3.消息驱动Bean,用于处理异步消息,接受客户端发送的消息,并据此触发响应的业务逻辑。通常与JMS一起使用,
  • JMS

    1
    2
    3
    4
    5
    JMS是一个Java EE的API,用于在两个或多个客户端之间异步发送和接受消息。JMS提供了一种标准的方式来实现消息传递,使得开发这可以专注于业务逻辑,而不必关心消息的底层传输细节。
    JMS支持两种消息传递机制:
    1.点对点模型,消息被发送到一个特定的队列,然后被一个或多个消费者接受,每个消息只能被一个消费者接受,一旦被消费,就会从队列中消失,保证了消息的顺序传递,并且会确保消息不会消失。
    2.发布/订阅模式。消息被发送到一个特定的主题,然后被所有订阅了该主题的消费者接受,与点对点模型不同,发布/订阅模型中的消息可以被多个消费者接受,而且消费者可以随时加入或离开主题。
    主要组件:消息生产者,消息消费者,消息,队列管理器,主题管理器,JMS提供者
  • JNDI

    1
    2
    3
    4
    5
    6
    7
    JNDI(Java Naming and Directory Interface)是一个Java API, 用于在Java应用程序中查找和访问各种命名和目录服务。JNDI提供了一种统一的方式来访问不同类型的目录和命名服务,如DNS,LDAP,CORBA等。JNDI允许开发者将服务名称与实际服务实现分离,使得应用程序可以更加灵活和可配置。
    主要概念:
    1.命名上下文,包含一组名称和对象的目录结构,类似文件系统中的目录
    2.目录服务i,提供了命名和目录功能的服务,如LDAP(Lightweight Directory Access Protocol)服务。
    3.绑定,将一个名称与一个对象关联起来的操作。
    4.查找,根据名称在命名上下文中检索对象的操作。
    5.引用
  • ejb和javabean的区别

    1
    2
    3
    4
    5
    6
    JavaBean是一种Java类,它遵循特定的命名和设计模式,JavaBean通常用于封装数据,作为一个简单的值对象或者数据容器。JavaBean类通常是可序列化的,并且提供无参构造函数。它的属性通过一组标准的getter和setter方法来访问和修改,JavaBean可以在任何Java应用程序中使用,包括桌面应用程序,Web应用程序等。
    EJB是Java EE的一部分,它是一个规划,用于开发和部署分布式、面向对象的业务逻辑,EJB旨在简化企业级应用程序的开发,提供事务管理、安全和分布式计算等底层服务,EJB分为会话Bean、实体Bean、消息驱动Bean,企业级、分布式、并发、生命周期

    1.两者都是可重用的组件,都有get和set方法,都可以进行组装来构建java应用
    2.JavaBean不能跨进程访问,较简单,EJB基于RMI技术,可以被远程访问,较复杂
    3.JavaBean可以运行在一般的Web容器上,EJB必须部署在EJB容器中
  • JDBC

    1
    2
    3
    4
    5
    6
    7
    是Java语言提供的一种数据库连接API,允许Java程序和多种关系型数据库进行交互。
    1.加载数据库驱动
    2.建立与数据库的连接
    3.创建statement
    4.执行SQL
    5.处理结果
    6.关系资源
  • JDBC两种连接方式的特点和优缺点

    1
    2
    3
    4
    5
    直接连接:使用DriverManager
    每次请求时,通过DriverManager直接创建一个新的连接。连接的创建和关闭通常在应用程序代码中显式进行。特点是简单,更容易理解,新手。缺点是每次数据库操作都要创建和关闭,增加数据库的负载和延迟。浪费系统资源。连接不复用

    池连接(使用DataSource和连接池)
    连接池是一个预先创建的连接集合,用于管理和复用数据库连接。应用程序从连接池中获取连接,使用完毕后返回到池中,而不是关闭连接。优点提高了应用程序的性能,避免过多的消耗系统资源。灵活,线程安全。缺点,复杂,配置需要学习时间。
  • 连接池优点、配置、特性、访问步骤

    1
    2
    3
    4
    5
    6
    7
    优点:性能提升、节约资源、加快响应、并发支持、稳定性强、配置灵活

    配置:最大连接数、最小连接数、连接超时、测试连接、最大空余时间

    特性:连接复用、自动收缩、负载均衡

    访问步骤:加载驱动 -> 创建数据源DataSource -> 获取连接(从连接池) -> 使用连接创建StateMent -> 处理SQL结构 -> 释放资源 -> 关闭连接池
  • EJB本地接口、远程接口

    1
    EJB访问过程:EJB客户端通过JNDI查找EJB的Home接口,然后通过Home接口获得EJB对外接口,获得对外接口后,调用对外接口定义的EJB业务方法,而真正的逻辑是Bean对象完成的
  • 消息中间件的原理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    基于消息队列的机制。允许应用程序根据队列来发送和接受消息,从而实现系统间的解耦和异步通信,
    消息生产者:
    发送消息的应用程序或服务,将消息发送到消息队列中,然后可以继续执行其他任务,无需等待消息被处理。
    消息队列:
    存储消息的缓冲区,确保消息在生产者发送和消费者接受之间得到暂存。队列通常由消息中间件管理,提供对消息的持久化,有序传递,优先级排序
    消息消费者
    从消息队列中接受消息的应用程序或服务
    中间件服务
    管理和协调消息传递的核心组件,接受生产者消息,存储队列,传递消费者消息
    消息协议
    定义消息格式和通信规则
  • 社交通讯软件的架构

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    社交通讯软件的架构通常需要支持高并发、实时性、数据一致性以及高可用性。通常采用微服务架构、事件驱动架构或两者的结合。

    客户端层:
    IOS,Android,Web前端,用户交互,网络请求
    API网关:
    负责处理客户端的所有请求,进行路由、认证、授权、限流、熔断、日志记录,提供统一的接口给客户端,简化客户端的调用逻辑。
    服务层;
    微服务,消息服务,搜索,服务之间用RESTful方式交互
    消息队列/中间件
    RebbitMQ、Kafka,用于处理异步消息,事件广播、服务解耦。用户发送消息时,消息服务可以将消息写入消息队列,由其他服务异步处理和分发。
    数据库层
    缓存层
    搜索引擎
    文件存储
    实时通讯
    分布式
    服务的注册与发现
    持续集成
  • 持久化技术,ORM技术

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    持久化包括:
    文件系统
    关系数据库
    非关系数据库
    对象数据库
    分布式数据库
    内存数据库

    ORM技术
    面向对象程序设计语言和关系数据库之间的桥梁,主要特点
    映射,封装,数据持久化,事务管理,查询语言
    常见ORM包括,Hibernate,
  • JDBC、实体Bean和Hibernate特点

    1
    JDBC提供了最基础的数据库操作能力,适用于简单的数据库交互场景;实体Bean是EJB规范的一部分,主要用于表示业务数据,但在现代Java应用中已经较少使用;Hibernate是一个功能强大的ORM框架,适用于需要复杂对象关系映射和数据库操作的场景。
  • 缓存的分类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    读取缓存:解决读取速度慢
    写入缓存:解决写入速度慢
    读写缓存,狭义上解决介质读写速度不匹配问题,

    HTTP缓存,页面级缓存,数据库缓存,opcode缓存,反向代理缓存,

    按存储介质分,内存:网站进程内,同服务器独立进程,独立服务器,分布式服务器组。磁盘:本地文件和数据库,独立服务器
    按照存储的数据分
    延迟加载的缓存:
  • 大型网站设计一般涉及的主要缓存技术

    1
    2
    3
    4
    5
    6
    7
    8
    1.浏览器缓存:图片、css、脚本存储
    2.cdn缓存:内容分发网络缓存静态资源,图片,视频,css/js文件到全球各地的边缘服务器上,当用户请求这些资源时,CDN会从最近的边缘服务器提供内容,从而减少延迟和提高加载速度。
    3.反向代理缓存:Nginx位于Web服务器前,缓存用于请求的动态内容,相同的请求再次到来时,代理服务器可以直接缓存的内容,减轻后端服务器的负担。
    4.数据库缓存:MySQL的查询缓存,存储了查询结果,减少数据库的查询时间。
    5.对象缓存系统:Redis用于存储小块的经常访问的数据,如用户会话,配置参数,计数器等, 这些数据通常在内存中,访问速度非常快
    6.页面缓存,将整个动态生成的页面缓存起来,当用户请求相同的页面时,直接返回缓存的页面内容,而不是重新生成。
    7.应用层缓存
    8.分布式缓存:存储跨多个服务器共享的数据,确保所有服务器都能快速访问相同的数据副本。
  • 缓存失效

    1
    2
    3
    4
    解决缓存失效有三种思路
    1.使用consistent hashing算法,把数据缓存分片,减少缓存宕机对服务的影响范围。在服务器数量比较少时,增加虚拟节点保证服务器能均匀分布在圆环上。
    2.缓存多份
    3.实现缓存持久化或半持久化
  • 缓存的常见模型和应用场景

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    常见缓存模型:
    1.内存缓存:LRU、MRU、FIFO、LFU
    2.磁盘缓存:用于存储那些不经常访问,但需要快速访问的数据
    3.分布式缓存:Redis,Memcached用于分布式系统中,可以提供高性能、可扩展的缓存服务。
    4.浏览器缓存:根据HTTP头部信息决定是否使用本地缓存的资源
    5.数据库缓存:某些数据库管理系统如MySQL的查询缓存会缓存查询结果,以加快后续查询的速度。

    应用场景:
    1.Web应用:缓存经常请求的页面或数据,减少数据库负载,提高响应速度。
    2.数据库查询优化:预先计算和存储复杂的查询结果,以便快速响应用户的请求
    3.文件系统
    4.电商平台
    5.社交媒体:缓存用户动态、评论等
    6.移动应用:在没有网络连接时也能访问内容
    7.API服务
    8.大数据处理
  • 负载均衡几种策略

    1
    2
    3
    4
    5
    6
    7
    1.轮询
    2.加权轮询
    3.最少链接
    4.加权最少连接
    5IP哈希
    6.URL哈希
    7.基于延迟的负载均衡
  • 负载均衡下Session的处理方案,优缺点

    1
    2
    3
    4
    1.Session复制,
    2.cookie-based session,完全无状态,服务器不需要存储任何session信息,所有的状态都存储在客户端的cookie中,安全性问题,大小限制
    3.分布式缓存,redis,高性能,可伸缩性共,多个服务器之间共享
    4.数据库session存储,
  • SOA(ESB)

    1
    2
    3
    SOA,面向服务的架构,是一种设计方法,其中应用程序由一系列松散耦合的服务组成,这些服务通过标准化的接口和协议进行通信。SOA关注于服务的重用性和互操作性。
    ESB是一种中间件,它支持SOA的实施,允许不同服务之间的消息传递,并且可以转换消息的格式以适应不同的接收者
    微服务架构是一种将应用程序构建为一组小型,独立服务的方法,每个服务运行在自己的进程中,通常通过轻量级机制如HTP RESTful API进行通信,
  • 中台

    1
    2
    3
    在大型企业和互联网公司中,中泰通常指的是一个集中的服务平台,它提供一套共享的服务和工具,如用户管理,订单处理,数据分析,支付处理等,以支持多个业务线和产品。
    中台提供的服务和工具可以被多个业务线和产品共i想,避免重复开发的情况。
    封装和抽象,数据整合,
  • 微服务架构

    1
    2
    3
    4
    微服务架构是一种将应用程序设计为一组小型、独立服务的方法,每个服务运行在自己的进程中,通常通过轻量级机制进行通信,
    优点,模块化,松散耦合,独立开发,独立部署,灵活性和扩展性,技术多样性,可以采用不同的技术栈,容错性,易于部署
    缺点,复杂性,运维,初始成本

  • 系统拆分,水平和垂直

    1
    2
    3
    4
    系统拆分呢是将一个大型、复杂的系统分解为多个较小的、更易于管理和维护的部分的过程,可以提高系统的可伸缩性,可维护性和可扩展性。
    水平拆分:也称为分层架构,将系统按照不同的功能层次进行拆分,将表现层,业务逻辑层和数据访问层分离,每一层负责不同的功能,层与层之间通过定义良好的接口进行通信,提高了系统的模块化程序,便于管理和维护,各层可以独立开发,降低耦合,层数过多,系统复杂性增加

    垂直拆分:将系统按照业务功能进行拆分,每个部分负责一个特定的业务领域或功能模块。每个模块专注于一个业务领域,可能会导致重估的功能实现,
  • 数据库拆分

    1
    2
    3
    4
    水平拆分:将数据表按照某种规则,拆分到多个数据库中,每个数据库中包含相同的数据表结构,但是存储不同的数据集,提高了系统的可伸缩性,
    垂直拆分,将不同的表或表的一部分拆分到不同的数据库中,通常基于业务功能或数据访问模式,将相关的表或数据存储在一起,以提高性能和可维护性,
    功能拆分
    地理拆分
  • 提高网站访问速度的常用方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    CDN内容分发网络
    压缩文件
    减少HTTP请求
    使用异步加载
    优化图片
    使用缓存
    服务器优化,优化配置
    数据库优化,
    最小化HTTP重定向
  • TOGAF

    1
    2
    3
    4
    The Open Group Architecture Framework是一个开放的组织架构框架,提供了一套全面的结构化的方法来设计和实施企业架构。

    主要的架构包含
    业务架构,应用架构,技术架构,数据架构,安全架构,治理交媾,基础设施架构,服务架构,运营架构

企业级软件开发技术
https://jetthuang.top/所有/企业级软件开发技术/
作者
Jett Huang
发布于
2024年4月20日
许可协议