架构

不了解架构的本质,怎么能打造一个有序的系统呢?

烈酒焚心 提交于 2020-03-21 22:05:25
现在的软件系统越来越复杂,当然相应地,架构的作用也越来越明显。作为开发人员,我们每天都在和架构打交道,在这个过程中,对于架构也经常会产生各种各样的问题: 什么是架构?架构都有哪些分类,分别解决什么问题呢? 怎样才是一个好的架构设计?我怎么才能成长为一名优秀的架构师呢? 这些问题涉及我们对架构的认识,也是学习和运用架构的开始。所以,今天,我们就来深入地分析架构的实质,让你能够透彻地理解它。 架构的本质 物理学中有个很著名的“熵增定律”:一个封闭系统,都是从有序到无序,也就是它的熵(即混乱程度)会不断地增加,最终系统会彻底变得无序。 这个理论放在软件系统的演化上,也是非常适用的。 一方面,随着业务需求的增加,我们会往系统里不停地添加业务功能;另一方面,随着访问量的不断增加,我们会不断通过技术手段来加强系统非业务功能。如果事先不做良好的设计,随着时间的推进,整个系统野蛮生长,就会逐渐碎片化,越来越无序,最终被推倒重来。 不过,自然界中的生物可以通过和外界交互,主动进行新陈代谢,制造“负熵”,也就是降低混乱程度,来保证自身的有序性,继续生存。比如,植物通过光合作用,把光能、二氧化碳和水合成有机物,以此滋养自己,延续生命。对于软件系统,我们也可以主动地调整系统各个部分的关系,保证系统整体的有序性,来更好地适应不断增长的业务和技术变化。这种系统内部关系的调整就是通过架构实现的,所以

Spring Cloud各个组件的配套使用

我只是一个虾纸丫 提交于 2020-03-21 08:03:10
我们从整体上来看一下Spring Cloud各个组件如何来配套使用: 从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构。 其中Eureka负责服务的注册与发现,很好将各服务连接起来 Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护。 Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示 Spring Cloud Config 提供了统一的配置中心服务 当配置文件发生变化的时候,Spring Cloud Bus 负责通知各服务去获取最新的配置信息 所有对外的请求和服务,我们都通过Zuul来进行转发,起到API网关的作用 最后我们使用Sleuth+Zipkin将所有的请求数据记录下来,方便我们进行后续分析 Spring Cloud从设计之初就考虑了绝大多数互联网公司架构演化所需的功能,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。这些功能都是以插拔的形式提供出来,方便我们系统架构演进的过程中,可以合理的选择需要的组件进行集成,从而在架构演进的过程中会更加平滑、顺利。 微服务架构是一种趋势,Spring Cloud提供了标准化的、全站式的技术方案,意义可能会堪比当前Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。 从现在开始

做人、做事,做架构师——架构师能力模型解析

别来无恙 提交于 2020-03-21 01:24:38
文 / 周爱民(《程序员》2008年4月刊)来自CSDN 引子 究竟是什么让你在同一个位置上——例如程序员或技术负责人——工作了三年、五年或者更久,而仍然得不到任何的发展空间?你觉得自己已成为技术圈中的大牛,并信心满满地去拿明天就要颁发的某某大奖,然而却仍然停留在同样的技术职位上,去年到今年涨的薪水甚至填不平物价升幅?于是,你开始对老板不满,对员工不满,对昨天升职的那个同事不满……你开始计划明天就要跑单,或者准备考虑提出加薪却又心怀忐忑。 如果技术人员有发展的轨迹,那么他要么“看透工具的本质,把关注点转移到‘团队’的圈子里去”,要么“顺着代码铺就的道路,亦步亦趋地成为良匠大师”。仅以技术方向而言,你大概可以做到架构师、总架构师甚至首席架构师;但问题是:你现在还只是一个程序员。那要如何才能踏上通往架构师之路呢?本文为你解析一个架构师的能力模型。 你能不能做一个好的架构师? 架构师不是界定一个技术高下的职位名称,而是一个职务。所谓职务,包括职——职位,务——工作。前者决定了你具备哪些资源,可以影响到怎样的范围,以及面向的机构,后者则简单地是你需要完成的工作列表。 所以我说“架构师”不是指“一个能做架构的人”。前者是把架构师当职能,后者是当工人。能做一份工作列表中的事,并不等于就成为相应职位上的人。在管理体系里面,你的个人特性决定了你在哪个位置,而技术技能只是做事实施的必需

周爱民 - 架构师能力模型

為{幸葍}努か 提交于 2020-03-21 01:24:25
要想从一名普通程序员发展成为优秀的架构师,“个人特性”与“技术技能”缺一不可;而“技术专业能力”、“人际关系能力”和“业务能力”更是优秀架构师重要的三种能力。 引子 究竟是什么让你在同一个位置上——例如程序员或技术负责人——工作了三年、五年或者更久,而仍然得不到任何的发展空间?你觉得自己已成为技术圈中的大牛,并信心满满地去拿明天就要颁发的某某大奖,然而却仍然停留在同样的技术职位上,去年到今年涨的薪水甚至填不平物价升幅?于是,你开始对老板不满,对员工不满,对昨天升职的那个同事不满……你开始计划明天就要跑单,或者准备考虑提出加薪却又心怀忐忑。 如果技术人员有发展的轨迹,那么他要么“看透工具的本质,把关注点转移到‘团队’的圈子里去”,要么“顺着代码铺就的道路,亦步亦趋地成为良匠大师”。仅以技术方向而言,你大概可以做到架构师、总架构师甚至首席架构师;但问题是:你现在还只是一个程序员。那要如何才能踏上通往架构师之路呢?本文为你解析一个架构师的能力模型。 你能不能做一个好的架构师? 架构师不是界定一个技术高下的职位名称,而是一个职务。所谓职务,包括职——职位,务——工作。前者决定了你具备哪些资源,可以影响到怎样的范围,以及面向的机构,后者则简单地是你需要完成的工作列表。 所以我说“架构师”不是指“一个能做架构的人”。前者是把架构师当职能,后者是当工人。能做一份工作列表中的事

数据库主体在该数据库中拥有架构,无法删除解决方法

本小妞迷上赌 提交于 2020-03-20 18:37:44
服务器数据库上建立了一个专属的管理员,因为测试想将其删除,但是总是提示该用户拥有架构不能删除,而且架构显示db_owner也不可更改,我用的是sqlserver2008。在SQL Server2000中删除数据库用户很简单,只要直接删除或者使用Drop User命令就可以了,但是SQL Server2008中直接操作是不行的,这是因为在SQL Server 2008中架构是作为实体对待的。所以要删除该用户,需要先删除该用户所拥有的架构或更改此架构的所有者。否则会提示”数据库主体在该数据库中拥有架构,无法删除。 搜索了一下知道每一个数据库用户对应于一个系统登陆帐号,并且每一个架构只能赋予一个用户。所以直接删除用户的架构是不可以的,然后我就新建一个登录名,并且在用户映射里面将db_owner架构付给他,然后就可以删除之前的用户了。 【完美世界 http://www.23cat.com/Contents_51864.html】 【戮仙 http://www.23cat.com/Book_51960.html】 来源: https://www.cnblogs.com/cxd4321/p/3997804.html

杉岩数据企业云存储解决方案

二次信任 提交于 2020-03-20 12:10:19
虚拟化技术在企业私有云IT基础架构中仍然占据重要地位,同时,为了进一步提升应用效率,越来越多的生产环境也正在逐步变革,从以虚拟机为中心的架构向以容器和微服务为中心的云原生架构过渡,在这个过程中,存储如何有效支撑各种云主机应用与微服务应用,对于企业的私有云数据中心提出了新的挑战。 企业面临的问题 存储设施七国八制,硬件锁定缺少弹性 多种云平台对于存储的要求各不相同,块/文件/对象存储对应不同类型的应用,对外提供不同的服务接口,一种存储设备无法满足多种类型的云平台存储需求,而且传统存储在扩展性方面不能满足云时代大规模云平台对存储在线弹性扩容的需求,在可维护性方面则面临硬件架构绑定、运维复杂、难以维保等问题,而且这些问题会随着存储设备种类和数量的增多进一步放大。 业务调度变更频繁,资源不能共享 随着开发测试虚拟机以及容器、微服务平台在企业私有云平台的上线,大型企业的应用快速迭代、频繁发布对存储系统的支撑提出了严峻挑战,不同业务的数据保存在不同厂商的存储设备中,数据流动性差,不仅导致存储空间及性能资源浪费严重,数据灾备方案也很难统一化。 开源产品难以维护,不能实现企业级产品化 基于开源虚拟化技术的云平台如OpenStack为众多客户提供了快速构建私有云基础设施的能力,但是存储部分却不一样,开源的存储系统如Ceph虽然可以小规模部署试用, 但在大规模商用时会遇到很多问题

集团架构的ERP vs 单公司架构ERP 解决集团管控问题的区别

爱⌒轻易说出口 提交于 2020-03-18 23:32:40
集团架构模型与单公司架构模型ERP解决集团管控问题的区别 架构的理解 集团架构模型:在同一个账套中,将集团下所有公司或工厂进行集中管理; 单公司架构模型:集团下不同的公司或工厂,需要用不同的账套进行独立管理; 基础资料 业务模型:集团A项下有三家分子公司X、Y、Z,且都需要使用一个原料“010-000-000” 集团架构模型的ERP: 集团统一维护一套基础资料,各分子公司直接引用:只需要在集团A下建一个物料编号“010-000-000”,X、Y、Z分别引用即可,不需要分别在X、Y、Z下新建三次。 单公司架构模型的ERP: 各分子公司分别建立各自账套中的基础资料:需要在X,Y,Z下分别建物料编号“010-000-000” ,且需要人工确认唯一性。 集团架构模型相对单公司架构模型的ERP的优越性: 1)避免各分子公司单独、反复录入数据,确保基础数据的统一性、唯一性; 2)节约系统资源、减少冗余数据、提升系统利用率; 3)减少人工的重复劳动,提高人员作业效率; 4)为集团财务、业务一体化提供统一的归集元素,是实现真正的集团化管控的最基本要求之一; 公司间业务协同 业务模型:X、Y是二家公司,“X”是生产工厂,“Y”为销售公司,X是Y的供应商,二公司间按预定的协议价结算。那么: Y公司的采购订单确认后成为X公司的销售订单; X公司的销售发票确认后成为Y公司的采购发票;

oo第一单元作业总结

非 Y 不嫁゛ 提交于 2020-03-18 17:18:41
oo第一单元作业总结 一、前言 第一单元作业主要内容为 表达式求导 ,其最终任务是一个支持简单幂函数和简单正余弦函数的导函数及其组合的求解问题。本文将从程序结构分析、bug分析、互测策略、对象创建模式等多个方面进行总结。 二、程序结构分析 第一次作业 总体架构: Main.java 中进行输入输出处理, Polynomial 管理项 Item 。 规模度量与风格探测: 主要问题在于 derivate 方法复杂度过高。 类耦合度分析: 第二次作业 总体架构: SineFunc 、 Const 、 CosineFunc 、 PowerFunc 、 XFunc 、 Function 均实现 Function 接口,其中定义了 derivate 和 toString 方法,所有基础函数因子由工厂模式 Factory 生成, Item 类内部使用 ArrayList 管理上述因子, Expression 类内部使用 ArrayList 管理Item项,底层逻辑整体结构为二维 ArrayList ,此外 FormatTest 和 InputProcessor 分别做输入格式判断与预处理,为交由工厂做准备。 规模度量与风格探测: 类耦合度分析: 第三次作业 总体架构: 底层逻辑沿用Task 2架构,不同的是将各类基础函数与加法乘法组合看做同一层,均实现 Item 接口。 规模度量与风格探测:

从程序员到软件工程师

懵懂的女人 提交于 2020-03-18 11:59:03
软件产业发展到今天,分工越来越细。程序员做为一个通用的称谓已经无法确切定义各种工作的特点和分类。正因为软件开发中各种职责区分不清,无论是刚刚写代码的新手还是具有多年经验的老手,一概被扣上程序员的通用名称,这也使得很多进入这个领域的软件开发人员无法制定自己未来的技术职业发展之路。 实际上,软件公司也逐渐认识到了对程序员分类的重要性,开始将各种职位定义的更加准确。对于从事软件开发的程序员来说,更需要尽快明确自己的发展方向,并在此方向上将专业知识积累的更深厚,这能让你尽快逃脱对未来发展方向的迷茫。为此,我们专门推出程序员成长系列的特别策划,将分别深入探讨软件设计师、测试工程师、文档工程师、项目经理、产品经理几种角色的成长之路。 程序员成长系列之一 软件设计师可以预先构建软件结构,如同建筑架构师一般。比尔·盖茨被称为微软公司的首席软件设计师,首先是因为他是一个优秀的架构设计师,中国同样需要这样的人才。-微软大中国区总经理黄存义 从程序员到软件设计师 2000年1月13日下午,世界软件业巨人、美国微软公司突然在位于华盛顿州雷德蒙德市的总部举行新闻发布会。比尔·盖茨把微软CEO宝座拱手让给长期伙伴史蒂夫-巴尔默,只保留董事局主席一职,但同时出任新职务“首席软件设计师”。比尔·盖茨说:“今后我将全力设计开发面向未来的新软件,同时研究制定微软的总体技术发展战略。” 比尔

高性能MySQL 第一章 mysql架构与历史

人盡茶涼 提交于 2020-03-18 10:44:43
mysql的存储引擎架构把查询处理及其他系统任务和数据的存储/提取相分离 1.1 mysql逻辑架构   第一层:链接处理、授权认证、安全等大多数基于网络的工具或者服务都有类似的架构   第二层:核心服务,查询解析、分析、优化、缓存、所有的内置函数(日期、时间等),所有跨存储引擎的功能,存储过程、触发器、视图等   第三层:存储引擎,负责数据的存储和提取   1.1.1 连接管理与安全性     每个客户端连接都会在服务器进程中拥有一个线程,服务器会缓存线程,   1.1.2 优化与执行     mysql会解析查询,并创建解析书,然后优化。     在查询之前,会先检查查询缓存 1.2 并发控制   1.2.1 读写锁     读锁和写锁     1.2.2 锁颗粒       表锁:       行级锁:可以最大程度的支持并发,只在存储引擎层实现 1.3 事务   原子性、一致性、隔离性、持久性   1.3.1 隔离级别     未提交读:事务的修改,即使没有提交,对其他事务也都是可见的。脏读     提交读:一个事务只能看见已经提交的事务的修改。不可重复读     可重复读:保证了同一个事务中多次读取同样记录的结果是一致的,mvcc,mysql默认隔离级别     可串行化:强制事务串行执行   1.3.2 死锁     各种死锁检测和死锁超时机制