【后端】Struts2 框架
概述
Struts2框架用于开发基于MVC的Web应用。Struts框架最初由
Craig McClanahan
创建,并在2000年5月捐赠给Apache基金会,Struts1.0在2001年6月发布。Struts2是opensymphony的webwork框架和Struts1的结合
特性
Struts2提供了对基于POJO的操作的支持,验证支持AJAX支持,对各种框架的集成支持,如Hibernate、Spring、Tiles等,对各种结果类型的支持,如Freemarker、Velocity、JSP等,各种标签支持,主题和模板支持。
依赖包
官网: http://struts.apache.org/
获取依赖jar
点击Download 进入依赖下载页,然后点击
struts-7.0.0-lib.zip
目录结构
struts2的目录结构与servlet/JSP相同。在项目里面,struts.xml文件必须位于 WEB-INF\classes文件夹中。
执行流程
1、用户发送操作请求
2、Container 映射 web. ...
【重构】老系统重构指南
概述
系统重构是结合当前业务现状,对系统进行重新设计的过程。这并不是完全从零开始,而是从现有基础向更高水平迈进的过程(从1到10)。
老系统能够支撑公司业务多年,必然有其可取之处,重构时千万不要全盘否定,而是要深入挖掘业务价值,做好用户调研,保留关键的业务场景和流程,取其精华,去其糟粕。
重构原因
性能老化:系统已经“跑不动”了,无法满足当前需求,亟需引入年轻化的技术和架构。
模块耦合过深:各板块之间耦合性过强,关联复杂,导致维护和扩展困难。
功能落后:许多功能已无法适应业务的飞速发展,存在明显的瓶颈。
系统臃肿:长期以来的各种补丁堆叠,让系统变得越来越复杂和难以管理。
流程冗长:业务流程繁杂且冗长,稍作调整就可能引发连锁反应。
优化困难:系统功能优化举步维艰,任何改动都显得不合理或不自在。
操作
结合各垂直事业部业务场景,梳理业务流程现状
先梳理业务流程现状,再结合现状提出可优化的流程点与业务协商,双方意见没冲突,那就可以往下推进。
梳理时,建议重点关注以下几点:
主要流程:先把当前主要大流程搞清楚,一般比较容易整理
正向流程:一件事情的正常流转
逆向 ...
【大数据】数据仓库、数据中台与数据湖
一、引言
随着大数据技术的不断发展,数据已经成为企业最重要的资产之一。为了更好地管理和利用这些数据,企业需要选择合适的技术和工具。数据仓库、数据中台和数据湖作为三种不同的数据处理和管理技术,各自具有独特的优势和应用场景。了解它们之间的区别与联系,有助于企业根据实际需求做出明智的选择。
二、数据仓库(Data Warehouse)
稳定、可靠的数据存储与查询
数据仓库的定义与特点
数据仓库是一个面向主题的、集成的、相对稳定的、随时间变化的数据集合,主要用于支持企业或组织的决策分析过程。
目标:为业务分析提供高性能的结构化数据查询,通常是面向分析型处理(OLAP)。
它具有以下特点:
1)集成性
数据仓库能够整合来自不同业务系统的数据,消除数据冗余和不一致性,提供一个统一的数据视图。
2)排序性
数据仓库中的数据按照时间顺序进行存储和管理,便于用户进行历史数据的分析和比较。
3)稳定性
数据仓库注重数据的稳定性和质量,对数据进行清洗、转换和加载,确保数据的准确性和可靠性。
4)面相主题
数据仓库按照业务需求组织数据,将数据划分为不同的主题域, ...
【架构】DDD领域驱动设计概念
概念
DDD,全程是Domain-Driven
Design,翻译过来就是领域驱动设计。
DDD是一个软件设计理念,通过深入理解业务领域,来指导软件设计、和开发。
DDD
强调与业务专家紧密合作,将复杂的业务问题,转化为可管理的软件模型。
作用
1、满足业务需求
通过与业务专家密切合作,DDD
确保软件模型准确反映业务需求,减少了软件与业务之间的脱节。
2、增强设计
将复杂业务逻辑,分解成领域模型、和限界上下文,使得系统设计更加模块化、和灵活。
3、改善团队协作
使用通用语言,使得业务专家、和开发团队,能够有效沟通、和协作,减少了误解、和沟通成本。
4、支持业务变化
DDD
强调领域模型的演化、和适应,允许系统随着业务需求的变化,而不断调整和优化。
DDD四层架构
总共有四层:
1、用户界面层(UI/Presentation Layer)
2、应用层(Application Layer)
3、领域层(Domain Layer)
3、基础设施层(Infrastructure Layer)
这四层架构提供了一个清晰的层次结构,确保业务逻辑和技术 ...
【微服务】sentinel+gateway 实现限流
概述
Sentinel
是阿里巴巴开源的流量防卫组件,支持对微服务流量进行实时监控和保护,特别适用于
Spring Cloud Gateway、Zuul等主流 API 网关的限流、熔断等场景。
功能
Sentinel
提供流量控制、熔断降级、系统自适应保护、热点参数限流等核心功能,帮助开发者应对高并发流量及微服务系统的稳定性挑战。
优点
Sentinel
具备轻量化、易集成、实时性强、规则灵活配置等优点,支持多语言、多框架,并提供可视化的控制台,方便动态管理限流规则。
## 限流规则的维度
Sentinel
支持多种限流规则维度,灵活应对不同的流量控制需求,包括网关维度和 API
分组维度。
需求如下:假设有两个服务的多个 URL:
A服务:
http://ip:port/a/xxx -
要求:60秒内最多访问60次
http://ip:port/a/yyy -
要求:60秒内最多访问60次
http://ip:port/a/zzz -
要求:60秒内最多访问30次
B服务:
http://ip:port/b/eee -
要求 ...
【微服务】SpringCloudGateWay
API 网关
API
网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API
网关封装了系统内部架构,为每个客户端提供一个定制的
API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API
网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供 REST/HTTP 的访问 API
网关
功能
1)性能:API高可用,负载均衡,容错机制
2)安全:权限身份认证,脱敏,流量清洗,后端签名(保证全链路可信调用)
黑名单:(非法调用的限制)
3)日志:日志记录(spainid,traceid)一旦涉及分布式,全链路跟踪必不可少
4)缓存: 数据缓存
5)监控:记录请求响应数据,api耗时分析,性能监控
6)限流:流量控制,错峰流控,可以定义多种限流规则
7)灰度:线上灰度部署,可以减少风险
8)路由:动态路由规则
比较流行的网关:
目前比较流行的网关有:Nginx、Kong、0range 等等
还有微服务网关zuul ...
【架构】系统架构分类
架构分类
软件开发的常常提到的架构的概念:
比如说单体架构、垂直应用架构、分布式架构、SOA架构、微服务架构
单体架构
单体应用架构(Monolithic
Architecture)是一种传统的应用架构模式,将应用程序作为一个整体部署和运行在单一的软件实体中。在单体应用架构中,应用的各个功能模块紧密地耦合在一起,共享相同的运行环境和数据库。
应用场景
单体应用架构适用于一些简单和小规模的应用场景,如内部管理系统、小型电子商务网站等。这种架构模式通常适用于初创企业或小型业务,因为它具有快速开发、部署和维护的优势。
优点
1)简单易用
单体应用架构通常比较简单直观,易于开发、测试和维护。开发人员可以更容易理解整个代码库,降低开发复杂性。
2) 性能较好
由于应用程序的各个模块都在同一进程中运行,它们可以共享内存和资源,减少了通信开销,因此在某些情况下可以提供较好的性能。
缺点
1)可扩展性有限
单体应用架构通常较难进行水平扩展,无法根据需求和负载增长进行动态扩展。当用户流量和数据量增长时,会面临性能瓶颈。
2) 耦合性高
...
【日常唠叨】和老伙计恰羊肉串捏
最近和老伙计聊了不少,分享了一下各自的人生心得,顺便也享受了一顿羊肉餐。我们去的那家店铺装修风格很有特色,整个环境充满了浓浓的内蒙古风情。一进门就仿佛置身于广袤的大草原,真的很有氛围!不仅如此,店里的价格也比较亲民。
我们提前预约了,等了大约 5
分钟,服务很及时。菜品方面,羊肉、羊杂汤、烤面包、各种蔬菜都带有一些地方特色,真的让人吃得很过瘾。老伙计觉得羊杂汤特别地道,味道浓郁,颇具内蒙古风味,而我则觉得他们家的冻酸奶更是意外的好吃,口感细腻,酸甜适中,完美解腻。
总之,这次的恰羊肉不仅有趣,食物也很让人满足,环境也很有特色,是一次愉快的就餐体验。
【Canal】SpringBoot整合Canal监听器
简介
canal
可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。
前提
准备好 Mysql 和 Navicat
业务场景
数据库镜像
数据库实时备份
索引构建和实时维护(拆分异构索引、倒排索引等)
业务 cache 刷新
带业务逻辑的增量数据处理
数据库增量日志解析,提供增量数据订阅和消费
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x ,
8.0.x
工作原理
MySQL主备复制原理
MySQL master 将数据变更写入二进制日志( binary log,
其中记录叫做二进制日志事件binary log events,可以通过 show binlog events
进行查看)
MySQL slave 将 master 的 binary log events
拷贝到它的中继日志(relay log)
MySQL slave 重放 relay log
中事件,将数据变更反映它自己的数据
canal 工作原理
canal 模拟 MySQL ...