【架构】系统架构分类
架构分类
软件开发的常常提到的架构的概念:
比如说单体架构、垂直应用架构、分布式架构、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 ...
【RabbitMQ】延迟队列+死信队列延迟删除实现
场景
当一个订单在删除时,状态修改为锁定,当30分钟没有解锁后,那么将订单的的状态变成删除,并且执行真正的删除逻辑,将订单相关的删除。
解决:订单被误删的问题,如果在删除的延迟时间中(30分钟内),将状态修改为正正常则不会删除
实现
常量定义
12345678910111213public class MQConst { public static final String EXCHANGE_DELAY_NAME_DELETE_ORDER ="topicExchange.delay.delete.order"; public static final String QUEUE_DELAY_NAME_DELETE_ORDER ="queue.delay.delete.order"; public static final String ROUTINGKEY_DELAY_NAME_DELETE_ORDER ="routingKey.delay.delete.order"; publi ...
【Azure】Azure云存储集成
概述
Azure云存储是一种由微软提供的云端存储服务,允许用户通过互联网存储、管理和访问数据。Azure云存储提供了多种存储类型,满足不同的应用场景需求,从简单的文件存储到大规模的非结构化数据处理。它的高可用性、全球覆盖、弹性扩展、数据备份与恢复功能,使其成为企业和开发人员常用的云存储解决方案
主要功能:
Blob存储:用于存储非结构化数据(如图片、视频、日志文件)。支持三种存储层级(热、冷、归档),根据访问频率优化存储成本。
文件存储:通过SMB协议提供共享文件存储服务,支持多用户和跨平台访问。
表存储:提供非关系型的键值对存储,适合大规模的数据处理和查询操作。
队列存储:提供消息队列服务,支持大规模消息传递,用于异步处理和应用间通信。
优势:
全球数据中心:Azure在全球拥有多个数据中心,提供全球范围内的数据访问和冗余。
弹性和扩展性:可根据应用需求动态扩展存储容量和性能。
安全性和合规性:Azure提供全面的数据加密、访问控制和合规性认证,确保数据安全。
成本优化:通过多层存储和自动化的成本管理工具,有效降低存储成本。
集成
配置
1 ...
【JDOS】AWS S3 SDK操作京东云存储
AWS S3 SDK介绍
Amazon的对象存储服务S3的Java SDK客户端, 京东云的对象存储兼容AWS S3
API,因此可以使用Amazon S3 SDK来操作京东云的OSS存储服务。
这种兼容性是为了让用户能够更轻松地切换或同时使用多个云提供商的对象存储,而无需更改代码。Amazon
S3协议已经是行业标准,因此许多云提供商(如京东云、阿里云、腾讯云等)都提供了兼容S3
API的服务接口
通过AWS S3
SDK配置和连接京东云的对象存储服务。京东云提供了一个与S3协议兼容的接口,因此开发者可以继续使用熟悉的AWS S3 SDK,而不用额外学习和适配京东云的原生API
集成
配置
application.yaml的配置如下:
12345678# 对象存储服务oss: # 京东 oss jd: access-key: your-access-key secrete-key: your-secrete-key endpoint: your-endpoint bucket-name: your-bucket-name
配置类
...
【STM32】生活中STM32的应用
应用场景
STM32
是一款非常灵活和功能强大的微控制器,它可以用于多种设备和应用场景。STM32
的多功能性主要归因于其高性能、低功耗和丰富的外设接口。以下是
STM32 可以用于的一些设备和应用领域:
水族箱设备
STM32 可以用于水族箱自动化设备,例如:
(1)水质监测
监测水的温度、pH
值、溶解氧、浑浊度等,通过传感器数据来确保水族箱环境适宜
(2)自动喂食器
根据设定的时间和数量自动喂养水族生物
(3)照明控制
控制LED照明系统,模仿日出日落的自然光循环,提供可定制的光照方案。
(4)水泵和过滤系统控制
通过调节水泵速度、滤水器和空气泵来优化水流和氧气含量。
(5)温度控制
控制加热器或冷却系统,保持水温在稳定范围内
智能家居设备
STM32 也广泛用于智能家居产品,包括:
(1)智能灯光控制系统
通过无线通信(如 Zigbee、Wi-Fi)控制照明的开关和亮度
(2)智能门锁
提供基于指纹、密码或远程控制的智能门锁解决方案。
(3)家庭安防系统
与传感器集成,检测入侵或火灾等危险,发送报警信号
(4)智能音箱 ...
【RabbitMQ】异步更新数据
场景
需求如下:
有个玩家基本属性配置表,
配置了玩家拥有的基本属性值,当玩家配置表里面的属性调整:比如:策划规定,这个版本需要对玩家力量值增加,全服玩家的基本面板里面的力量值就需要增加,策划想让玩家多一个抗毒时间属性,那么玩家需要获得这个抗毒时间属性。注意:玩家因为等级提升力量值就不要用数据配置表的属性,而是使用玩家自己属性+数据配置表的基础数据(追加值的问题这里不是重点)
表设计
玩家数据配置表, player_attribute_config
属性
类型
备注
id
BIGINT
主键ID
attribute_name
VARCHAR
属性名称 (如:力量, 体力, 抗毒)
attribute_value
VARCHAR
基础属性值 (策划设定的默认值)
created_time
TIMESTAMP
创建时间
update_time
TIMESTAMP
修改时间
玩家信息表, PlayerInfo
属性
类型
备注
id
B ...
【i18n】消息内容实现多语言化
场景
当系统固定消息/标题文字,需要面向多个国家的时候,i18n就能很好解决了
概述
国际化(Internationalization,简称i18n)是指在软件开发中设计和实现应用程序,使其能够适应不同语言、文化和区域设置的需求,而无需对代码进行重大修改。国际化通常与本地化(Localization,简称l10n)一起使用。国际化关注的是软件的通用设计,而本地化则是针对特定语言和地区的内容调整。
配置
spring中已经有i18n相关的依赖了
1、引入依赖
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId></dependency>
2、创建i18n文件
根据自己项目国际化语种配置, 此处的结构
123456789src└── main └── resources └── i18n ├ ...