菜单

2017赌博网站开户送金有关系统规划原则回想

2019年1月30日 - 2017赌博网站开户送金

     近日有人问我
系统规划的基准,事实上无论今日逐条技术栈怎么演变,那多少个本质的准绳与方法不会变,
让我们回想一下 这一个规则:

•分散关注 Separation of concerns. Divide your application into
distinct features with as little overlap in functionality as possible.
The important factor is minimization of interaction points to achieve
high cohesion and low coupling. However, separating functionality at
the wrong boundaries can result in high coupling and complexity
between features even though the contained functionality within a
feature does not significantly overlap.
差别世界的功用,应该由差其他代码和微小重迭的模块组合。

•单一职分,效用高内聚 Single Responsibility principle. Each
component or module should be responsible for only a specific feature
or functionality, or aggregation of cohesive functionality.

•一个模块不需求精通另一个模块的内部细节 Principle of Least Knowledge
(also known as the Law of Demeter or LoD).
A component or object
should not know about internal details of other components or
objects.

•Don’t repeat yourself (DRY). You should only need to specify
intent in one place. For example, in terms of application design,
specific functionality should be implemented in only one component;
the functionality should not be duplicated in any other component.

•不要过度设计过多模块 Minimize upfront design. Only design what is
necessary. In some cases, you may require upfront comprehensive design
and testing if the cost of development or a failure in the design is
very high. In other cases, especially for agile development, you can
avoid big design upfront (BDUF). If your application requirements are
unclear, or if there is a possibility of the design evolving over
time, avoid making a large design effort prematurely. This principle
is sometimes known as YAGNI (“You ain’t gonna need it”).

2017赌博网站开户送金 1

软件设计 中 SOLID原则

Simplicity (KISS)

     The most important principle is keeping things simple.
不难是软件设计的目的,不难的代码占用时间少,漏洞少,并且易于修改。Simplicity
should be your northern star, your compass, and your long-term
commitment. Keeping software simple is difficult because it is
inherently relative. There is no standardized measurement of
simplicity, so when you judge what is simpler, you need to first ask
yourself for whom and when. For example, is it simpler for you or for
your clients? Is it simpler for you to do now or maintain in the
future?

低耦合原则(Minimize Coupling)

      
代码的别样一个有的应该减弱对其余区域代码的借助关系。尽量不要选择共享参数。低耦合往往是周到结构种类和可以设计的表明

Designing for scale      Designing for scale is a difficult art, and each technique
described in this section comes with some costs. As an engineer, you
need to make careful tradeoffs between endless scalability and the
practicality of each solution. To make sure you do not over engineer
by preparing for scale that you will never need, you should first
carefully estimate the most realistic scalability needs of your system
and design accordingly.
Design for Self-Healing
    
The final design principle in this chapter is designing
software for high availability and self-healing. A system is
considered to be available as long as it performs its functions as
expected from the client’s perspective. It does not matter if the
system is experiencing internal partial failure as long as it does not
affect the behavior that clients depend on. In other words, you want
to make your system appear as if all of its components were
functioning perfectly even when things break and during maintenance
times.
2017赌博网站开户送金,Designing For Failure
    
Each application component must be deployed across redundant
cloud components, ideally with minimal or no common points of
failure
      Each application component must make no assumptions about the
underlying infrastructure—it must be able to adapt to changes in the
infrastructure without downtime
      Each application component should be partition tolerant—in other
words, it should be able to survive network latency (or loss of
communication) among the nodes that support that component
      Automation tools must be in place to orchestrate application
responses to failures or other changes in the infrastructure

一些统筹的举行

Keep design patterns consistent within each layer. Within a
logical layer, where possible, the design of components should be
consistent for a particular operation. For example, if you choose to
use the Table Data Gateway pattern to create an object that acts as a
gateway to tables or views in a database, you should not include
another pattern such as Repository, which uses a different paradigm
for accessing data and initializing business entities. However, you
may need to use different patterns for tasks in a layer that have a
large variation in requirements, such as an application that contains
business transaction and reporting functionality.
Do not duplicate functionality within an application. There should
be only one component providing a specific functionality—this
functionality should not be duplicated in any other component. This
makes your components cohesive and makes it easier to optimize the
components if a specific feature or functionality changes. Duplication
of functionality within an application can make it difficult to
implement changes, decrease clarity, and introduce potential
inconsistencies.
Prefer composition to inheritance. Wherever possible, use
composition over inheritance when reusing functionality because
inheritance increases the dependency between parent and child classes,
thereby limiting the reuse of child classes. This also reduces the
inheritance hierarchies, which can become very difficult to deal
with.
Establish a coding style and naming convention for development.
Check to see if the organization has established coding style and
naming standards. If not, you should establish common standards. This
provides a consistent model that makes it easier for team members to
review code they did not write, which leads to better
maintainability.
Maintain system quality using automated QA techniques during
development.
Use unit testing and other automated Quality Analysis
techniques, such as dependency analysis and static code analysis,
during development. Define clear behavioral and performance metrics
for components and sub-systems, and use automated QA tools during the
build process to ensure that local design or implementation decisions
do not adversely affect the overall system quality.
Consider the operation of your application. Determine what metrics
and operational data are required by the IT infrastructure to ensure
the efficient deployment and operation of your application. Designing
your application’s components and sub-systems with a clear
understanding of their individual operational requirements will
significantly ease overall deployment and operation. Use automated QA
tools during development to ensure that the correct operational data
is provided by your application’s components and sub-systems.

在网络系统下暴发的片段标准

1.幸免单点故障:任何事物都要有多个。那增添了开销和复杂度,但却能在可用性和负载品质上收入。而且,那促进设计者选用一种分布式优先的想想。可(异地)安顿和左右路由连接,破除单点故障;可分布,可调度的标准

2.横向扩大,而不是纵向增加:升级服务器(纵向)的成本是指数进步的,而增加另一台商用服务器(横向)的工本是线性增进的。
3.尽量精减应用程序要旨所必要形成的做事。

4.API优先:将应用程序视为一个提供API的服务,而且,不假定服务的客户端类型(手机选用、Web站点、桌面应用程序)。

5.提供尽可能新的数目:用户可能不须要立刻看到最新的数码,最后一致性可以带来更高的可用性。
6.统筹时要考虑有限支撑和自动化:不要低估应用程序维护所须要的大运和工作量。软件首次公开揭破是一个值得称扬的里程碑,但也标志着真正的工作要开头了。
7.为故障做好准备:将故障对终极用户的熏陶最小化。
8.数量反映和监察平台;
用户作为数据,系统品质监控数据,系统卓殊和作业相关数据等的报告
9.数目分级存储原则:单内存cache存储,内存cache+异步更新,内存cache+同步更新;
从八个纬度分析用户作为模型,决定有关数据的贮存策略:1),能经得住用户数量的遗失吗?2),能忍受多少的非及时性吗?
3),数据的读写比例分布怎么着?
10.意况分离原则;
能静态化尽量静态化,在代码和进度布署上,在DNS层上抓牢气象分离的系统规划准备
11.轻重分开原则;
保持衔接和业务处理的分别,接入尽量轻量化,使得系统具备很好的吞吐量,处理尽量异步化,使得可以平滑扩张
12.
消除服务器重原则:同一IDC的其余服务对系统的震慑,第三方调用系统接口的割裂和过载爱戴,看重第三方服务的监察和平安有限扶助规范等。
13.柔性可用原则;
处理好万分意况下的灰度体验,区分好重点处理途径和非关键路径,而系统规划要硬着头皮把紧要路径转换成非关键路径
14.异步化,能异步的尽心异步原则;
透过内存管道,操作流水等技巧拓展拼接各样处理模块
15.灰度准绳;
灰度发表政策是按照用户号码段,用户ip段,仍然用户vip等级,用户所在城市等展开灰度升级,保障系统的平整迭代
16.可怜的全速响应和一键切换原则;
IDC断电?系统切换来正常的本钱是稍稍?时间呢?要求多少人操作?牛的系统可以一个人在治本后台按一个按钮就可以切换,再按一下就足以切换回来
17.有损服务标准;
用低本钱提供海量的服务条件
18.充足利用DNS层做好系统的可分布设计
19.区分系统作为和用户作为并各自进行统筹,甚至在关键时刻可以举办转移。
20.努力已毕无状态:状态消息要保留在尽可能少的地点,而且要保存在特意安插的组件中。持之以恒app_server设计的无状态统筹条件,转变用户作为为系统作为,使得app_server具有无状态的性状
21.多级cache设计以及各种cache的路由设计
22.“大体系小做”原则  
23.强政工模型到终极一致性事务模型的更换原则
24.尽可能拆分
25.劳动架构“去大旨化”
26.数据化运营
27.尽可能使用成熟组件
28.尽可能自动化

普遍web系统规划的一部分主旨标准:

可用性:
一个网站的正常化运行时刻对于众多供销社的声名与运作都是根本的。对于部分更大的在线零售站点,几分钟的不可用都会造成数千或数百万美元的营收损失,因而系统规划得可以持续服务,并且能急忙从故障中回复是技术和作业的最焦点需要。分布式系统中的高可用性要求精心考虑关键部件的冗余,从部分系统故障中飞快复苏,以及难点暴发时优雅降级。
性能:
对于绝大部分站点而言,网站的性质已变成一个器重的设想因素。网站的速度影响着使用和用户知足度,以及查找引擎名次,与营收和是或不是能留下用户平昔有关。因而,创设一个针对性高速响应与低顺延进行优化的系统杰出首要。
可靠性:
系统必须是保证的,那样平等数量请求才会始终重返相同的数目。数据变换或更新之后,同样的伸手则应当回到新的数额。用户应该掌握一点:如果东西写入了系统,或者取得存储,那么它会持久化并且肯定保持不变以便未来展开搜寻。
可扩充性:
对于其他大型分布式系统而言,大小(size)只是索要考虑的局面(scale)难题的一个地点。同样关键的是竭力去增强处理更大负荷的能力,那平日被叫作系统的可增添性。可扩大性以种类的好多见仁见智参数为参考:可以处理多少额外流量?增添存储容量有多不难?可以处理多少更加多的作业?
可管理性:
系统规划得容易运维是另一个生死攸关的考虑要素。系统的可管理性等价于运维(维护和立异)的可扩大性。对于可管理性须求考虑的是:难题爆发时不难诊断与通晓,便于更新或涂改,系统运维起来何等不难(例如:常规运维是或不是不会引发战败或尤其?)
成本:
成本是一个根本元素。很引人侧目那包罗硬件和软件开销,但也要考虑系统布署和保安这一面。系统创设所花费的开发者时间,系统运行所要求的运维工作量,以及陶铸工作都应有考虑进来。花费是颇具系统的总资金。

剩下来 就足以围绕 ISO 9126成色模型:软件质量模型的6大特征和27个子特性
来进展系统规划与分析,度量, 他们是:

一、功能性:
1、适合性:提供了相应的效果
2、准确性:正确(用户须求的)
3、互操作性:产品与制品中间互相数据的能力
4、保密安全性:允许通过授权的用户和系列可以健康的走访相应的多少和信息,禁止未授权的用户访问…….
5、成效性的依从性:国际/国家/行业/公司 标准规范一致性

二、可相信性:产品在确定的条件下,在规定的光阴内到位规定职能的力量
1、成熟性:幸免内部错误造成软件失效的能力
2、容错性:软件现与世长辞障,自我处理能力
3、易复苏性:失效情状下的回复能力
4、可相信性的依从性

三、易用性:在指定使用口径下,产品被精通、
学习、使用和吸引用户的力量
1、易明白性:
2、易学性:
3、易操作性:
4、吸引性:
5、易用性的依从性:

四、效用性:在确定台标准下,相对于所用资源的数据,软件出品可提供适宜品质的力量
1、时间特性:平均事务响应时间,吞吐率,TPS(每秒事务数)
2、资源利用性:CPU 内存 磁盘 IO 互联网带宽 队列 共享内存
3、功效依从性:

五、软件维护性:”四规”,
在规定标准下,规定的时光内,使用规定的工具或措施修复规定职能的能力
1、易分析性:分析定位难点的难易程度
2、易改变性:软件出品使指定的改动可以被达成的力量
3、稳定性:防止意外修改导致程序失效
4、易 测试性:使已修改软件能被认可的力量
5、维护性的依从性

六、软件可移植性:从一种环境迁移到另一种环境的能力
1、适应性:适应不一致平台
2、易安装性:被安装的能力
3、共存性:
4、易替换性
5、可移植性的依从性:

有心人回看现在各个的系统平台,框架,组件,工程措施,都至少含有有下面的部署性思想与规范。可能还有遗漏的,后续补充。


明天先到那时候,希望对你在系统架构设计与评估,团队管理, 项目管理, 产品管理
有参考意义 , 您或许感兴趣的篇章:
互联网电商购物车架构衍生和变化案例
网络业务场景下信息队列架构
新闻系统架构设计演进
互连网电商搜索架构衍变之一
供销社新闻化与软件工程的迷思
商厦项目化管理介绍
软件项目成功之要素
人际调换风格介绍一
精益IT社团与分享式领导
学习型社团与同盟社
供销社更新知识与等级观念
社团目的与个体目的
初创公司人才招聘与治本
美貌公司环境与公司文化
公司文化、团队文化与知识共享
高成效的团队建设
系列管理挂钩陈设
营造高速的研发与自动化运维
某大型电商云平台实践
互连网数据库架构设计思路
IT基础架构规划方案一(网络序列规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实践流程
餐饮行业解决方案之业务设计流程
供应链必要调研CheckList
公司应用之性质实时度量系统衍变

如有想询问越多软件设计与架构, 系统IT,公司音信化, 团队管理
资讯,请关切自己的微信订阅号:

2017赌博网站开户送金 2

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和新浪共有,欢迎转发,但未经小编同意必须保留此段声明,且在小说页面显然地点给出原文连接,否则保留追究法律义务的义务。
该文章也同时发表在我的单独博客中-Petter Liu
Blog

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图