前言
本文介绍架构的目的是什么,架构是解决什么问题。

目的
架构的目的不是为了架构而架构,不是别人做了所以自己要做,不是为了技术自嗨。。。

架构的真正目的在于解决软件系统复杂度带来的问题。这条准则可以让新手架构心里有数,不会一头雾水,让老手架构有的放矢,不要贪大求全。

有了指导思想,让我们来举个例子,看如何将“解决软件系统复杂度带来的问题”应用到实践。

简单复杂度分析案例

假设我们需要设计一个大学的学生管理系统,其基本功能包括登录、注册、成绩管理、课程管理等。当我们对这样一个系统进行架构设计的时候,首先应识别其复杂度到底体现在哪里,从下面几个角度全方位考虑。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):cgmx9880 扩列获取java进阶资料学习,无工作经验不要加哦!

1、性能
学校大约1 ~ 2万人,平均每个学生访问系统不超过一次,所以性能上不复杂,存储用MySQL,服务器用Nginx,缓存是不需要的。

2、扩展性
学校系统功能稳定,可扩展的空间并不大,因此可扩展性也不复杂。

3、可用性
学校管理系统没有太高的可用性要求,即使服务器发生宕机1 ~ 2个小时也是没有问题的。不过,数据存储可靠性上有要求,不能容忍丢失大量数据。所以要考虑多种异常情况,比如机器故障,机房故障等。对于机器故障,可以考虑MySQL同机房主备;对于机房故障,可以做MySQL跨机房备份。

4、安全性
学生的信息还是有一定的隐私性的,但没有不要求像银行、金融那样的高安全性。只需要采用密码登录、HTTPS通信、数据库访问权限控制等方案就行。

5、成本
由于系统简单,访问量和存储数据量都不大,所以基本几台服务器就可以搞定。

复杂度来源
架构设计中,常见的几个考虑点:

1、性能
(1)访问量或并发量。确认日平均访问量,并判断是否存在高并发,短时间大流量(高峰期)情况,高峰期流量多少。
(3)响应速率。是否有低延迟要求,延迟要求是秒级还是分钟级。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):cgmx9880 扩列获取java进阶资料学习,无工作经验不要加哦!

2、可用性
(1)服务可用。可以容忍服务器宕机多长时间,1分钟还是1小时。
(2)存储可用。可以容忍多少数据丢失,一部分还是大量。

3、扩展性
(1)功能扩展。是否方便支持新的功能加入。
(2)水平或垂直扩展。是否支持增加相同功能的服务器(水平)或增加提供不同功能的服务器(垂直)。

4、安全性
看业务场景提供多高级别的安全性。

5、成本
在可行的方案中选择成本较低的。当然,如果资金足够且业务重要,可以选择成本高些的更可靠的方案。

[资源分享] 架构的目的相关推荐

  1. 资源分享系统|基于Springboot+vue实现资源分享系统

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...

  2. [资源分享] 推荐两本电子书

    又到了一周一次的资源和教程推荐.这周会推荐两本电子书,希望大家不只是收藏不阅读系列哦! 1. <模式识别与机器学习>(PRML)免费开放下载 第一本推荐的书籍就是 AI 领域里面一直都非常 ...

  3. 2017年3月份前端资源分享

    平日学习接触过的网站积累,以每月的形式发布.2017年以前看这个网址:http://www.kancloud.cn/jsfron... 03月份前端资源分享 1. Javascript 1754535 ...

  4. 软件开发视频资源分享

    资源分享 资源均来源于网络,在自学/开公众号的时候收集而来.如果侵权请联系我,会第一时间删除. 如果链接已失效(我也无办法,很多链接我是没有保存在自已的网盘中的,见谅). Java基础 Java马士兵 ...

  5. 资源分享:嵌入式stm32项目开发 心率检测仪的设计与实现

    资源分享:嵌入式stm32项目开发 心率检测仪的设计与实现 本课程主要基于心率检测仪的设计与实现讲解STM32开发技术,STM32开发板广泛应用于仪器仪表.家用电器.医用设备.航空航天.专用设备的智能 ...

  6. 前端资源分享-只为更好前端

    一.团队组织 网站 说明 腾讯 AlloyTeam 团队 腾讯Web前端团队,代表作品WebQQ,致力于前端技术的研究 ISUX 腾讯社交用户体验设计,简称ISUX,腾讯设计团队网站 CDC 腾讯用户 ...

  7. 云计算资源分享与下载

    云计算资源分享与下载 一. 摘要 自从上一篇实战第一个云程序之 后,我就没有再发布云计算相关的文章,这些天重新整理了一下草稿箱,发现这个系列有很多篇都存了大半年了,一直没有整理发布出来,今天就先发布这 ...

  8. GitHub编程资源分享

    源参考链接:https://github.com/crane-yuan/free-programming-books/blob/master/free-programming-books-zh.md ...

  9. java-net-php-python-jspm海外娱乐资源分享与交流计算机毕业设计程序

    java-net-php-python-jspm海外娱乐资源分享与交流计算机毕业设计程序 java-net-php-python-jspm海外娱乐资源分享与交流计算机毕业设计程序 本源码技术栈: 项目 ...

最新文章

  1. oracle的那些事
  2. 一文看懂Python(二)-----字符串篇
  3. python中有很多包管理工具有哪些不是_C 语言中有没有类似 Python 中 pip 的包管理工具?...
  4. install python 3.5.0_Mac 下安装Python3.5出现“python3-3.5.0 already installed, it's just not linked”错误...
  5. mysql 查询优化 ~ 多表查询基础知识
  6. cf813C(bfs)
  7. Python 实现控制一阶惯性系统
  8. Office 2019快速安装
  9. 控制面板打开后立即自动关闭
  10. 阿里云如何将一个域名解析到另一个域名上
  11. 360儿童手表显示服务器错误,360儿童卫士刷机失败怎么办 刷机方法
  12. Android组件化开发实践和案例分享 | 融合数10个项目模块
  13. java8中数据类型_Java 8中 基本数据类型
  14. K8S(二)安装配置篇
  15. NPM Error: Cannot find module ‘caniuse-lite/data/features/css-unicode-bidi.js‘
  16. 中专计算机专业execl教案,计算机专项目化教案(EXCEL教案
  17. 松柏先生:一个好战略,胜过1000个创意!
  18. 华为手机连电脑当摄像头用_今天才知道,华为手机摄像头还能这样用!还不会用你买什么华为?...
  19. Linux下C语言串口应用编程
  20. 网页 变黑白网页(灰色)

热门文章

  1. 微信退款异步通知获得的req_infoAES加密和解密方法以及常见的问题
  2. 天气预报今天几点下雨_今天天气预报几点下雨
  3. python小课网站_全民编程——Python小短课,美好的重复
  4. vue3.0项目实战 - ElementUI框架版
  5. sql删除主键并添加主键
  6. Mac 使用创建带密码的压缩文件
  7. 优盘病毒清理方法与预防措施
  8. 通过telnet管理华为路由器
  9. PHP redis hIncrByFloat浮点型增量精度问题解决方案
  10. oracle等待进程为lgwr,足球与oracle系列(3):oracle进程排名,世界杯次回合即将战罢!...