- 浏览: 2253302 次
- 性别:
- 来自: 北京
最新评论
-
yidongnan:
跟 spring boot 配合的例子可以使用这个库https ...
GRPC原理解析 -
kyo472083100:
写得很好,感谢楼主解释得很清晰
Mongodb中Mapreduce特性与原理 -
lanhz:
对于三个节点:1、2、3,如果2向1广播投给2(即2自己),1 ...
Zookeeper选举过程描述与状态迁移 -
Bll:
厉害了
GRPC原理解析 -
QING____:
xiatiandebaofengyu 写道有个问题:发布者在发 ...
Redis编程实践【pub/sub】
文章列表
《架构与未来》摘要(三)
- 博客分类:
- 架构
《确立架构原则》(特别推荐)
1、目标和原则
目标树的主题是:在降低成本基础上创造更多的盈利机会和更大的收入。这一主题可以进一步分解为:质量(体现在错误率和故障级别、测试覆盖率等)、可用性(服务的可用时间,SLA)、成本(软硬件投入、团队规模等)、市场响应时间(体现在SLA、发布时效性、自动化水平)、效率(需求迭代与人员投入时间比、自动化水平等)
理想情况下,架构原则将基于高层次的目标树主题,而不是具体的目标。目标可能会随着时间的推移而改变,因此,原则应该广泛地支持未来的和当前的目标。
架构原则非常抽象,以至于实际上无法直接应用在设计和架构审查上,无法 ...
《架构与未来》摘要(二)
- 博客分类:
- 架构
一、
管理和领导有许多区别,但两者都很重要。如果领导是承诺,那么管理就是行动。如果领导是目的地,那么管理就是方向。如果领导是激励,那么管理就是动机。如果领导是拉力,那么管理就是推力。
管理包括度量活动、目标评估、指标制订。
因此,在AKF我们实践了5-95规则:即用5%的时间制订一个充足、保守和详细的计划,同时承认这个计划不是完备的,把其余95%的时间投入到应急演练,以应付突发事件。(没有万全的作战计划)
组织的产出取决于个人的产出和团队的规模。效率是高性价比可扩展性的一个组成部分,用来度量以同样的投入取得更多或者更好的产出,或者以较少的投入取得更 ...
《架构与未来》摘要(一)
- 博客分类:
- 架构
一、
根据我们的经验,与扩展性有关的事故也遵循着同一规律。首席技术官(CTO)或者负责系统平台扩展性的高管也许把扩展性当成一个纯技术性的计划。这种理解纯粹是人为的失败,也是错误链上的第一个失败点。因为CTO过于聚焦技术,所以他没能清楚地定义必要的流程,以确定扩展性的瓶颈,这事第二个失败点。因为没有人在架构上寻找和定位瓶颈点与堵塞处,所以当用户数或者交易笔数超过某个限额的时候,整个系统就会出现故障,这是第三个失败点。当团队集合起来想要解决问题时,由于从来没有在事故排查以及问题定位的流程上进行投入,以致团队错误地把问题定位成“数据库调优”,这是第四个失败点。恶性循环一直在持续,由于各种 ...
一、“Architecture is like teenage sex,everybody talks about it,nobody really knows what is it.”
“Architecture is both the process and the product of planning,designing,and constructing buildings and other physical structures”
把一个整体切分成不同的部分,由 ...
《架构师》期刊摘要(2016年)三
- 博客分类:
- 架构
一、我对架构师职责定义如下:
1)以工程思维全面理解业务需求
2)基于模型和基础模式抽象简化
3)提出恰当可行的整体解决方案
4)在限定资源范围完成明确目标
5)满足业务需求且保证系统质量
...
《架构师》期刊摘要(2016年)二
- 博客分类:
- 架构
一、
1、分层架构
分层架构是最常用的架构,也被称为n层架构;多年来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎称为事实标准,因此被大多数架构师、开发者、软件设计者所熟知。
分层架构中的核心概念是管理依赖。如果我们使用依赖倒置原则和测试驱动开发(Test Driven Development),我们的架构会有更好的健壮性。因为,我们要保证所有可能的用例都有测试用例。(备注:依赖倒置原则是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。一种面向对象的设计原则。)
...
《架构师》期刊摘要(2016年)一
- 博客分类:
- 架构
一、《软件设计精要与模式》作者张逸在接收InfoQ采访时曾说:“评价一个架构的优劣方法之一是,把每个功能、非功能的因素扩大化,再看这个架构会不会出问题。”(本人赞同此说法)他的观点是说,架构设计要面向业务未来,而未来是不断发展的。架构不仅要承载业务的增长,还要兼顾技术发展的趋势。
《前言》(2016年6月)
二、我想任何人做架构多需要秉承“业务需求决定技术演化路线”的思路,那些暴露出来的现状和问题都驱动系统去转型,在系统和人之间找到一种最佳的合作模式,匹配已有的生产力和生成关系。正如软件开发学泰斗Kent Bech所说的:设计,是让你在长期过程中保持软件变化更加容易。
...
Flume是一个非常优秀日志采集组件,类似于logstash,我们通常将Flume作为agent部署在application server上,用于收集本地的日志文件,并将日志转存到HDFS、kafka等数据平台中;关于Flume的原理和特性,我们稍后详解,本文只简述如何构建使用Flume + kafka + HDFS构建一套日志采集系统。
1)Flume:作为agent部署在每个application server,指定需要收集的日志文件列表,日志文件通常为application通过logback等生成。(本文基于Flume 1.7.0)
2)kafka:基于Fl ...
nginx线程池模式探讨
- 博客分类:
- nginx
nginx的IO模型其实大家应该有所了解,简单而言,就是一个master进程和多个worker进程(进程数由配置决定),master进程负责accept请求并队列化,最后转发给worker进程并由其进行处理请求和响应的整个过程。不过,这是进程层 ...
《架构师》期刊摘要(2015年)三
- 博客分类:
- 架构
一、微服务解决我们哪些痛点呢?
1)技术架构、平台升级难:传统的单体式架构系统倾向于采用统一的技术平台或者方案解决所有的问题;而微服务的异构性,可以针对不同的业务特征选择不同的技术方案,有针对性的 ...
《架构师》期刊摘要(2015年)二
- 博客分类:
- 架构
一、一个优秀的设计过程或者方法论定义了一组一致的、可以重复的步骤,可以在将一个服务端服务组件输出为一个可访问的、有用的WEB API时使用。那就是说,一个清晰的方法论可以由开发人员、设计师和软件架构师共享,以便在整个实现周期内帮助大家协同活动。一个成熟的方法论还可以随着时间的发展,随着每个团队不断发现改善和精简过程的方式而得到精炼,却不会对实现细节产生不利的影响。
1、列出所有组成部分:列出客户端程序可能要从我们的服务中获取的,或要放到我们的服务中的所有的数据片段,我们将这些称为语义描述符。视角在客户端,而不是服务器端,将API设计成客户端使用的东西很重要。
2、绘制状态 ...
《架构师》期刊摘要(2015年)一
- 博客分类:
- 架构
一、架构应该是从简单到复杂,不断演变的一个过程。工程师思维驱动人们去开发一个理想化的系统。然而最好的架构却通常不是最理想的架构,而是最适合的架构。我们见过许多因为过度的架构设计而浪费宝贵的时间的案例,更有甚者因为过多不切实际的假想而导致架构迟迟无法落定,这种现象的术语描述,叫做“分析瘫痪”。
所以优秀的架构应该结合业务目标,在权衡之中寻求一个最优的点。
二、分布式系统在扩展性方面分成四个维度:
1、性能可扩展性:性能无法实现线性扩展,但是尽量使用具有并发性和异步性的组件。具备完成通知功能的工作队列要优于同步连接到数据库。
2、可用性可扩展:CAP理论表明 ...
《架构师》期刊摘要(2014年)
- 博客分类:
- 架构
1、WikiPedia上说“DevOps是软件开发、运维和质量保证三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合。它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发和运维之间相互依存关系的一种新的理解。”这恰好体现了精益管理中的客户价值原则,即:客户的关键来确定企业从设计到生产交付的全部过程,实现客户需求的最大满足。我们也可以把DevOps看作是一种能力,在缺乏这种能力的组织中,开发和运维之间存在着信息“鸿沟”。
如何获取这种能力呢?关键有两点:一是全局观,要从软件交付的全局出发,加强各角色之间的合作;二是自动化,人机交互界面的强大管理工具,比如各种受 ...
Maven+Nexus进行SCM发布
- 博客分类:
- 架构
对于java的一些公用依赖包,我们通常需要发布在私有的nexus平台中,以便其他项目组使用。
1)我们首先需要搭建自己的nexus平台。
2)用户授权,指定用户具有release权限。
3)调整maven中的setting.xml文件。
4)调整project中的pom.xml文件。
1、setting.xml配置样例:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.a ...
nginx + tomcat实现请求链跟踪
- 博客分类:
- nginx
我们很多时候需要排查HTTP请求的问题,比如请求的响应延迟的原因、跟踪请求的转发链等,这个时候我们需要nginx和tomcat配合调整日志格式来实现。
1)在nginx层面,对所有的请求添加一个特殊的header,header的值为一个 ...