当前位置: 首页 > news >正文

java架构设计

1.可维护性

           封装性,例如将缓存redis封装到一个service,别的地方用到,只需要传参调用就行。如果有一天换国产缓存,只需要修改service,而不需要修改多出引用地方

* 可维护性:后期功能迭代,不可避免,不要因为一个小的改动,导致大面积的修改代码,做到高内聚低耦合!!
>   * 比如我们短信平台,在涉及做缓存和搜索功能时,我会单独提供一套缓存服务和搜索服务,甚至支付也一样,单独提供一个支付的服务。这下额服务只对外暴露基本的功能接口。如果后期涉及到了一些政策原因,其他原因,导致你需要去替换中间件,比如将Redis缓存中间件替换为其他的国产化的缓存组件。 因为前面的设计,我不需要去改动我的业务服务里的任何内容,只需要在缓存服务中,将之前Redis的API,替换为国产化的缓存的API即可,其他的不需要动。
> * 可扩展性:需要主动追加一些额外的功能或者方向时,可以更方面的动态增减功能,其他功能不会受到影响。
>   * 比如我们短信平台,在策略以及接口模块中的校验时,采用了策略设计模式 + 责任链模式做到动态可插拔的校验规则,如果后期需要拓展校验规则,只需要去继承校验接口去做具体的实现,然后修改用户的校验规则字段,就可以很方便的、扩展功能。
> * 安全性:安全是每个产品都必须考虑的点,所有很多加密算法要考虑好,比如你们的数据传输时,可以上非对称加密,对称加密,各种国密,(AES,RSA,SM1,2,3,4会就聊),还有一些敏感数据的过滤,在一些XSS攻击,注入攻击,CSRF攻击,这些都需要考虑,而且后期HTTPS也是必上的。
> * 性能:比如基本的CND,DNS优化,缓存的设计,分库分表,合理的中间件,多线程。。。。
> * 容错兜底:比如熔断,降级,做好兜底。 限流方便的考虑,还有MQ做削峰,部署的时候要规避单点故障问题,每个服务至少两台节点。 还可以考虑一些异地多活,其次还有数据的冗余备份。
> * 监控…………普罗米修斯。
> * 弹性伸缩…………GraalVM

http://www.dtcms.com/a/189361.html

相关文章:

  • git cherry-pick和git stash命令详解
  • 反转链表II
  • leetcode0295. 数据流的中位数-hard
  • 关于 javax.validation.constraints的详细说明
  • HuggingFace的SafeSensor格式模型能转成Ollama格式的吗?
  • 26、测试咒语:魔法校验—— Jest+Testing Lib
  • SimpleAdmin云服务器发布
  • 浅聊一下数据库的索引优化
  • 19.Excel数据透视表:第2部分数据透视计算
  • 生产级编排AI工作流套件:Flyte全面使用指南 — Core concepts
  • 需求管理缺乏持续改进机制,如何建立
  • 计算机视觉----时域频域在图像中的意义、傅里叶变换在图像中的应用、卷积核的频域解释
  • 黑白浮生项目测试报告
  • 【入门】纸盒的最大体积是多少?
  • docker部署WeDataSphere开源大数据平台
  • redis数据结构-10(ZREM、ZSCORE、ZINCRBY)
  • 以价值为导向的精准数据治理实践,赋能业务决策
  • 移动端前端开发调试工具/webkit调试工具/小程序调试工具WebDebugX使用教程
  • 第十五届蓝桥杯国赛Python A组题解
  • 【认知思维】沉没成本谬误:为何难以放弃已投入的资源
  • 山东大学软件学院计算机图形学2025期末考题回忆版
  • 使用bitNet架构
  • 普通IT的股票交易成长史--20250513复盘
  • CAN(控制器局域网络)协议详解
  • Confusion2(Python反序列化+JWT)
  • 【前端】【JavaScript】【总复习】四万字详解JavaScript知识体系
  • 【数据结构】栈
  • 【MyBatis-8】MyBatis对象关联查询详解:高效处理复杂关系映射
  • Altium Designer AD如何输出PIN带网络名的PDF装配图
  • 内存中的“BANK”