zoukankan      html  css  js  c++  java
  • 架构设计之六个复杂度来源(续)

    这篇继上篇架构设计之六个复杂度来源 没有讲完的剩下的三个内容低成本、安全、规模等。

    一、低成本

    当我们的架构方案只涉及几台或者十几台服务器时,一般情况下成本并不是我们重点关注的目标,但如果架构方案设计几百甚至上千上万台服务器,成本就会变成一个非常重要的架构设计考虑点。例如,A方案需要10000台机器,B方案只需要8000台机器,但从比例上看,就节省了20%的成本。

    关于低成本,还有就是联系我实际开发,对于一些OA方面的开发,目前的码云上有不少示例可用做参考,甚至拿来即用,当然了,有一点不可忽略的是,Java的Web方面开源的程度和功能的强大并没有Python的Djaogo来的爽快。

    OA开源项目地址:https://gitee.com/aaluoxiang/oa_system

    运行效果,如下图所示:

    可以说,基本上满足了OA常用功能,当然对于其他方面的个性化功能,可能需要在此基础上扩展开发。不过,你要知道这个模板已经为你省了很多事情。正常来说,开发这个OA项目,要达到这种规模,以三个人来说,可能需要两个月到三个月左右。

    当然了,现成的解决方案也有其一定的局限性:

    比如现成的解决方案中可能包含你之前尚未接触过的新技术,熟悉这个新技术你可能需要一段时间。

    二、安全

    安全本身是一个庞大而又复杂的技术领域,并且一旦出问题,对业务和企业形象影响非常大。

    例如:

    2013年10月,为全国4500多家酒店提供网络服务的浙江惠达驿站网络有限公司,因安全漏洞问题,致2千万条入住酒店的客户信息泄露,为此导致很多敲诈、家庭破裂的后续事件。

    正因为经常能够看到或者听到各类安全事件,所以大部分技术人员和架构师,对安全这部分会多一些了解和考虑。

    从技术的角度来讲,安全可以分为两类:

    一类是功能上的安全;

    另一类是架构上的安全。

    1.功能上的安全

    例如:常见的XSS攻击、CSRF攻击、SQL注入、Windows漏洞、密码破解等,本质上是因为系统实现有漏洞,黑客有了可乘之机。黑客会利用各种漏洞潜入系统,这种行为就像小偷一样,黑客和小偷的手法都是利用系统或家中不完善的地方潜入,并进行破坏或者盗取。因此,形象地说:功能安全其实就是“防小偷”。

    XSS攻击是什么?

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

    CSRF攻击是什么?

    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

    SQL注入是什么?

    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。 [1]  比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击

    关于Window漏洞和密码破解,Window漏洞太多了,就不多说了,密码破解,比如对QQ密码破解或者是其他游戏或者社交网站账号破解等。通常对此的解决方案是,从用户的角度是少点击一些无关的链接,这样可以在一定程度上减少被破解的机会;从企业的角度上看,提高系统安全系数,提高核心安全方面的技术。

    2.架构安全

    如果说“功能安全”是为了防小偷,那么架构安全就是为了防强盗。

    强盗会直接用大锤将门砸开抢东西顺便加搞破坏,而小偷是偷东西也会搞破坏。一般情况,强盗相对于小偷,危害更大。

    因此架构设计时需要特别关注架构安全,尤其是互联网时代,理论上来说,系统部署在互联网上时,全球任何地方都可以发起攻击。

    传统的架构安全主要依靠防火墙,防火墙最基本的功能就是隔离网络,通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同信任程度区域间传送的数据流。

    三、规模

    很多企业级的系统,既没有高性能要求,也没有双中心高可用要求,也不需要什么扩展性,但往往我们一说到这样的系统,很多人都会脱口而出:这个系统好复杂。为什么这么说呢?关键就在于这样的系统往往功能特别多,逻辑分支特别多。特别是有的系统,发展实际比较长,不断地往上面叠加功能,后来的人由于不熟悉整个发展历史,可能连很多功能的应用场景都不熟悉,或者细节根本无法掌握,面对的就是一个黑盒系统,看不懂、改不动、不敢改、修不了,复杂度自然就感觉很高了。

    规模带来的复杂度主要原因在于“量变引起质变”,当数量超过一定阈值后,复杂度会发生质的变化。常见的规模带来的复杂度有:

    1.功能越来越多,导致系统的复杂度指数越来越高;

    2.数据越来越多,系统的复杂度发生质变;

    问:结合你所在的业务,分析一下注意的复杂度是这其中的哪些部分?是否还有其他复杂度原因?

    我的回答是:就目前而言,注意是功能越来越多,导致复杂度指数上升。

    小结:

    本篇是上一篇文章的续,上篇文章主要讲了高可用、高性能、可扩展性等三个方面。本篇主要是围绕低成本、安全、规模等方面。

    其实仔细想来,不管是高可用、高性能、可扩展性,还是低成本、安全、规模等。关键还是取决于业务。

  • 相关阅读:
    idea设置全局ignore
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistributable. Please ins
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistr
    kafka 删除 topic
    java编译中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError
    Centos中使用yum安装java时,没有jps的问题的解决
    Spring 整合Junit
    Spring纯注解配置
    Spring 基于注解的 IOC 配置
    打印java系统的信息
  • 原文地址:https://www.cnblogs.com/youcong/p/10048842.html
Copyright © 2011-2022 走看看