Java应用在架构设计时该考虑什么

本文探讨了在构建新应用时,特别是基于Java的系统,如何在架构设计上做决策。内容涵盖从架构风格(单体 vs 微服务)到后端、前端、运维、开发规范等多个方面,包括系统间通信、接口文档、数据库选择、任务调度、日志管理和监控等关键点。此外,还强调了身份验证、授权、代码质量管理及CI/CD流程在新系统建设中的重要性。
摘要由CSDN通过智能技术生成

前言

最近公司因业务发展需要建设一个新应用,在架构设计时我也有机会能在提供一些建议,这个过程还是比较有趣的,要找到符合业务场景和用户需求的技术,并且要考虑未来的扩展性,相对来说还是比较困难的。

涉及到后端、前端、开发规范、运维等多个方面的大量技术内容,为了以后能在类似的工作中变得更容易,我决定在本期内容中进行整理,列出一些在新项目建设时需要考虑的一些问题。

提前声明一下,本期内容在大多数问题下只提供一些解决该问题的技术,对于实现细节不是这期内容的重点;可能存在不完整的地方,主要的技术栈为Java;希望能对正在建立新系统的你有所帮助。

架构风格

首先需要明确新系统的基本架构风格,是现在比较流行的微服务架构,还是单体架构,SOA架构等。

Java应用在架构设计时该考虑什么

单体架构

单体架构将所有功能包含在单个部署单元中;

可能不支持灵活的发布周期,但不需要分布式通信。

微服务

多个较小的部署单元,它们利用分布式通信来实现应用程序的功能;

支持更小、更快的版本迭代,多个团队协同开发更加灵活,但代价是分布式通信问题。

后端相关

对于要新建应用的后端,需要考虑一下这些事情。

应用服务

应用服务该如何托管?对于分布式体系结构与Spring Boot配合使用是现在很好的解决方案;

而单体结构可能更适合使用如Wildfly这样的应用服务器;

应用服务的选择通常是为要提前确定的。

系统间通信

在构建分布式系统时,因为涉及到分布式系统间的通信,而通信技术的选择也有多种,例如:通过消息中间件(例如kafka、RocketMQ等)进行异步通信,也可使用Spring MVC和Feign进行Rest通信,或者Dubbo、Spring Cloud等进行RPC通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值