一个好的架构设计不全是考虑有多么先进的技术,相反先进的技术仅是其中一个很小的点。在此偶分享一下设计经验,主要是为了将自己的经验记录下来,以免以后忘了!毕竟已经开始慢慢不做技术了,担心再过几年已经没有能力写出这些内容来了。
在偶看看一个架构首要重要的就是要做到全面考虑问题,在此偶列出一些容易忽略的设计点(尤其是刚开始做架构设计的设计师):
1、
设计时一定要考虑将来如何发布和更新
面对一个7X24小时的系统,如何停机更新?显然一次停机升级影响较非常大,例如:银行核心业务系统,能停机吗?停机的代价是否很大?
1)
争取做到只有在代码变更的情况下才需要停机升级,估计很多人都觉得这是废话:当然只有代码变化了才可能发布,对可能大家都是这么想的,但未必这么做了,例如:将全局变量的值写在常量类中,如果此全局变量改变,那么当然是需要更改代码的,在此我所说的这类错误的代码变更就是需要在设计过程中需要特别注意的(后面我会有文章介绍如何做常量、全局变量的设计另外,对于有些经验的架构师可能会发现做小系统的架构比较容易,但对于复杂系统的架构就完全不一样了,复杂系统通常有多台服务器,而且每台服务器上还有多个端口对外服务);
2)在更新时也尽量保证有一台可以对外提供服务的系统,发布要分为两部分:数据库脚本和程序更新,其中:数据库脚本一定要控制不能现有应用,因为此次还有老应用正在运行;应用程序的更新可以一台一台的更新,因此需要提供一台备用应用服务器,平时不对外提供服务,每次发布时,先发布这台备用机器,在此备用机器上验证了完之后,再正式更新在线应用,在正式更新前请将对外服务指向那台备用服务器,然后再更新原来的在线应用;
3)在未做Session复制的情况一下一定要提供Failover机制,防止在更新时影响用户,有人会觉得奇怪为什么不做Clustering,利用Clustering就直接Session复制了,我请问如果有10000的在线用户,一个用户的Session有10K大(不算太大吧),请问Session的有多大?仅Session就要占掉每台应用服务器100M的内存,请问Java的堆内存最大能设多大?另外,如果频繁的Session复制AdminServer是否能撑住?
2、
要考虑在线验证方案
什么叫在线验证?就是在新上功能只能如何验证整个系统是正常的?各位是否遇到在新上功能后不知道如何合理进行验证,某些人就是直接在生产环境中用特定的数据进行测试,但请问如果是银行核心系统,要存款和取款如何测试?难道我首先存一笔,然后再取出来?看起来不太合理吧?我推荐各位一种方法:在生产系统中就是单独建立一批虚拟数据,加入是银行,那么可以建立一个虚拟机构,在此机构下建立的所有数据都是测试数据,这时就可以放心测试了。
3、
架构设计要注意当系统换代之后还希望留下些什么有价值的东东
任何一个系统都有下线的时候,那么当下一代系统开发时,当前这代还能留下什么东东?如果能留下的东东,那么就要注意设计,或者能够组件化等。
分享到:
相关推荐
### 系统总体设计原则详解 #### 一、系统总体设计原则 系统总体设计是确保信息化建设项目成功的关键步骤之一。为了使系统既能满足当前需求又能适应未来的发展,必须遵循一系列设计原则。 1. **统一设计原则**:此...
- 设计策略:阐述设计决策背后的思考,包括设计原则、方法和技术选择。 - 系统总体结构:展示系统的宏观架构,包括主要组件、子系统间的交互关系。 - 子系统结构与功能:详细描述每个子系统的结构和功能。 - ...
- **系统架构**: 关注特定系统的总体设计。 - **软件架构**: 关注软件系统的结构设计。 - **应用架构**: 关注应用程序的设计和开发。 - **技术架构**: 关注底层技术和基础设施的设计。 - **基础架构**: 关注支持上层...
- **基于设计原则**:架构应当基于一套明确的设计原则,以确保系统的稳定性与高效性。 - **多结构组成**:一个软件系统通常由多个不同的结构组成,每种结构关注于不同的视角。 - **组件及其关系**:软件架构明确了...
- 通过设计客户旅程,重点关注与客户的关键接触点,思考如何改善与客户的互动方式,提升客户体验。 - 利用数字技术,例如在线平台,提供实时的营销信息、产品动态等,以满足客户需求,提升客户满意度。 - **构建...
业务架构是一种高层次的概念,它是对业务系统的总体设计和规划,涉及到业务流程、数据流程、应用系统、技术架构等多个方面。业务架构的目的是为了满足业务发展的需求,提高业务效率、降低成本、提高客户满意度等。 ...
在总体设计阶段,各模块被视为黑盒,设计人员在较高层面思考模块间的关系,而不涉及具体实现细节。系统目标的确定需遵循针对性、实用性、预见性和先进性的原则,近期目标可能包括信息管理和分析,而中远期目标则可能...
2. 5G网络架构与设计原则的创新 - 网络设计原则的创新包括对无线通信系统的绿色化改进、蜂窝网络的弹性设计、智能信令控制、基站的隐身化、频谱利用的优化以及前传接口的革新。 - 用户中心网络(UCN)和软件定义空...
程序员和架构师的区别在于,程序员专注于编写代码,以实现特定的功能或应用程序,而架构师则应用程序的总体设计,包括如何组织代码、如何使用特定的技术、如何确保应用程序的可扩展性和可维护性等。 大数据量的挑战...
### 面向服务体系架构(SOA)与数据仓库(DW)的综合思考 #### 一、企业架构(EA)的基础概念与作用 企业架构(Enterprise Architecture,简称EA)的概念最早在1987年由IBM的J.A. Zachman提出。Zachman在其著作“A...
3. **系统架构设计**:这部分可能涉及如何根据需求来构建系统的总体架构,包括选择合适的硬件平台、确定软件结构、模块划分等,强调整体性与模块化设计原则。 4. **硬件设计**:教材可能会涵盖电子电路设计的基础...
第五章的主题聚焦于“总体...总体设计是软件开发中的重要阶段,它决定了系统的架构和模块化程度,对软件的可读性、可扩展性和可维护性有着深远影响。因此,设计师必须遵循一定的原则和流程,确保设计的高效性和质量。
- **蓝图设计的指导原则**:确保信息化架构与业务战略匹配,分析业务架构、应用架构、数据架构和技术架构之间的关联性。 - **蓝图设计的可视化展示**:通过图表等形式直观展示战略目标实现路径。 - **战略目标实现...
第三章“新架构思考”深入到网络功能层面,提出了新的网络单元概念,如网络控制单元(NCU)、网络报文处理单元(NPU)、网络数据单元(NDU)和网络智能单元(NIU)。这些单元分别承担着网络的控制、数据处理、存储和...
在这一部分中,软件设计人员需要对软件的设计进行总体规划,包括设计原则和设计要求、限制和约束等几个方面。设计原则和设计要求部分强调了软件设计的基本原则和要求,例如软件的性能、安全性、可维护性等;限制和...
首先,总体架构的设计应考虑满足当前业务需求和规模,具备良好的扩展性,并且不应过度设计,避免资源浪费。在此前提下,架构的设计可以分为三个主要部分:服务堆栈、服务拓扑和开源项目应用。 服务堆栈包括了WebAPI...
- **高层次视图**:在最高层次上,考虑系统的总体架构,包括前端、后端服务、数据库和第三方服务集成等。 - **组件层次**:进一步细化到各个组件,如用户界面组件、逻辑处理组件和数据存储组件。 - **实现层次**...