架构
文章平均质量分 87
iteye_19607
这个作者很懒,什么都没留下…
展开
-
Avro与JAVA
我们已经接触过很多序列化框架(或者集成系统),比如protobuf、hessian、thrift等,它们各有优缺点以及各自的实用场景,Avro也是一个序列化框架,它的设计思想、编程模式都和thirft非常相似,也都是Apache的顶级项目。Avro还提供了RPC机制,可以不需要生成额外的API代码即可使用Avro来存储数据和RPC交互,“代码生成”是可选的,这一点区别于protobuf...原创 2015-06-08 16:58:27 · 1298 阅读 · 0 评论 -
《架构师》期刊摘要(2016年)二
一、 1、分层架构 分层架构是最常用的架构,也被称为n层架构;多年来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎称为事实标准,因此被大多数架构师、开发者、软件设计者所熟知。 分层架构中的核心概念是管理依赖。如果我们使用依赖倒置原则和测试驱动开发(Test Driven Development),我们的架构会有更好的健壮性。因为,我们要保证所有可能的用例...原创 2016-11-28 12:54:41 · 384 阅读 · 0 评论 -
《架构师》期刊摘要(2016年)三
一、我对架构师职责定义如下: 1)以工程思维全面理解业务需求 2)基于模型和基础模式抽象简化 3)提出恰当可行的整体解决方案 4)在限定资源范围完成明确目标 5)满足业务需求且保证系统质量 架构师的责任心很重要,因为架构方面工作往往处于重要但不紧急的尴尬境地,如果架构师在这方面自己不重视,那还怎么能做好呢?当然,要是只关注技...原创 2016-12-01 17:22:14 · 180 阅读 · 0 评论 -
《架构漫谈》摘要
一、“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...原创 2016-12-01 19:59:17 · 343 阅读 · 0 评论 -
《架构与未来》摘要(一)
一、 根据我们的经验,与扩展性有关的事故也遵循着同一规律。首席技术官(CTO)或者负责系统平台扩展性的高管也许把扩展性当成一个纯技术性的计划。这种理解纯粹是人为的失败,也是错误链上的第一个失败点。因为CTO过于聚焦技术,所以他没能清楚地定义必要的流程,以确定扩展性的瓶颈,这事第二个失败点。因为没有人在架构上寻找和定位瓶颈点与堵塞处,所以当用户数或者交易笔数超过某个限额的时候,整个系统...原创 2016-12-07 15:05:03 · 205 阅读 · 0 评论 -
《架构与未来》摘要(二)
一、 管理和领导有许多区别,但两者都很重要。如果领导是承诺,那么管理就是行动。如果领导是目的地,那么管理就是方向。如果领导是激励,那么管理就是动机。如果领导是拉力,那么管理就是推力。 管理包括度量活动、目标评估、指标制订。 因此,在AKF我们实践了5-95规则:即用5%的时间制订一个充足、保守和详细的计划,同时承认这个计划不是完备的,把其余95%的时间投入到...原创 2016-12-12 22:04:05 · 241 阅读 · 0 评论 -
《架构与未来》摘要(三)
《确立架构原则》(特别推荐) 1、目标和原则 目标树的主题是:在降低成本基础上创造更多的盈利机会和更大的收入。这一主题可以进一步分解为:质量(体现在错误率和故障级别、测试覆盖率等)、可用性(服务的可用时间,SLA)、成本(软硬件投入、团队规模等)、市场响应时间(体现在SLA、发布时效性、自动化水平)、效率(需求迭代与人员投入时间比、自动化水平等) 理想情况下,架构...原创 2016-12-13 16:43:37 · 292 阅读 · 0 评论 -
nginx/tomcat日志格式规范
最近准备设计和开发一套日志收集平台,进而后续进行实时的日志分析、业务监控和预警等。在此之前,需要制定日志的格式规范,当然还有其他的约束性规范,才能良好的实现日志搜集、数据分拣、数据分析等特性。 制定日志格式规范的方式与目的: 1)所有项目,日志格式统一,可以极大的简化日志收集和分析的复杂度。 2)nginx、tomcat等日志格式,需要合理,让日志查...原创 2017-01-12 21:13:02 · 1344 阅读 · 0 评论 -
Flume基本特性(1.7)
Apache Flume是一个分布式的、可靠的、高效的日志数据收集组件;我们通常使用Flume将分散在集群中多个Servers的log文件,汇集到中央式的数据平台中,以解决“从离散的日志文件中查看、统计数据困难”的问题。当然,Flume不仅仅可以收集log文件,它也支持比如TCP、UDP等消息数据的收集;无论如何,我们最终解决的问题就是“将离散的数据进行收集”。我们先描述几个概念:...原创 2017-03-27 11:36:39 · 3410 阅读 · 0 评论 -
《架构师》期刊摘要(2016年)一
一、《软件设计精要与模式》作者张逸在接收InfoQ采访时曾说:“评价一个架构的优劣方法之一是,把每个功能、非功能的因素扩大化,再看这个架构会不会出问题。”(本人赞同此说法)他的观点是说,架构设计要面向业务未来,而未来是不断发展的。架构不仅要承载业务的增长,还要兼顾技术发展的趋势。《前言》(2016年6月) 二、我想任何人做架构多需要秉承“业务需求决定技术演化路线”的思路,那些暴露出...原创 2016-11-27 20:35:06 · 433 阅读 · 0 评论 -
Flume + kafka + HDFS构建日志采集系统
Flume是一个非常优秀日志采集组件,类似于logstash,我们通常将Flume作为agent部署在application server上,用于收集本地的日志文件,并将日志转存到HDFS、kafka等数据平台中;关于Flume的原理和特性,我们稍后详解,本文只简述如何构建使用Flume + kafka + HDFS构建一套日志采集系统。 1)Flume:作为agent部署在...原创 2016-11-25 22:13:56 · 4480 阅读 · 0 评论 -
keepalived学习总结
“Keepalived是一个C语言写的路由软件,它的主要目标是向linux系统和基础组件提供简单而健壮的负载均衡和高可用设施。负载均衡框架依赖于广泛使用的LVS(IPVS)内核,它提供了layer4(传输层)负载均衡。keepalived实现了一组检测器(checkers),根据负载均衡器的健康状态,动态的、自适应的维护管理它们。另一方面,高可用性是通过VRRP协议实现,VRRP协议是...原创 2015-08-12 18:31:07 · 665 阅读 · 0 评论 -
LVS学习备忘
LVS是构建在real server集群之上的、具有高扩展性和可用性的虚拟服务器,通常我们称之为“负载均衡”服务器。服务器的集群架构对用户而言是透明度,用户与集群系统交互时,就像与单个高性能的虚拟服务器交互一样;这对构架较大规模的服务站点,有极大的帮助。 实际服务器(real servers)和负载均衡服务器(LVS等)通过高速的LAN或者在地理位置上分散的WAN互相链...原创 2015-08-16 13:31:14 · 173 阅读 · 0 评论 -
【转发摘要】微服务架构设计
前言:本文摘自infoQ《架构师》期刊201606期中《谈谈后端业务系统的微服务化改造》一文,作者:张旭;与本文相关的文献包括:1)《微服务(翻译版)》2)《微服务(原文)》;非常感谢多位作者为我们提供如此优秀的文档! 1. 篇首语 业务系统是任何一个用户产品的必须组成,充当着一个门面的角色,用户的输入就是这个系统需要维护的,数据存取是整个系统的核心。例如,广告业务系...原创 2016-08-22 13:44:02 · 391 阅读 · 0 评论 -
Maven+Nexus进行SCM发布
对于java的一些公用依赖包,我们通常需要发布在私有的nexus平台中,以便其他项目组使用。 1)我们首先需要搭建自己的nexus平台。 2)用户授权,指定用户具有release权限。 3)调整maven中的setting.xml文件。 4)调整project中的pom.xml文件。 1、setting.xml配置样例: <...原创 2016-10-25 16:10:55 · 679 阅读 · 0 评论 -
《架构师》期刊摘要(2014年)
1、WikiPedia上说“DevOps是软件开发、运维和质量保证三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合。它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发和运维之间相互依存关系的一种新的理解。”这恰好体现了精益管理中的客户价值原则,即:客户的关键来确定企业从设计到生产交付的全部过程,实现客户需求的最大满足。我们也可以把DevOps看作是一种能力,在缺乏这...原创 2016-10-26 11:33:34 · 209 阅读 · 0 评论 -
《架构师》期刊摘要(2015年)一
一、架构应该是从简单到复杂,不断演变的一个过程。工程师思维驱动人们去开发一个理想化的系统。然而最好的架构却通常不是最理想的架构,而是最适合的架构。我们见过许多因为过度的架构设计而浪费宝贵的时间的案例,更有甚者因为过多不切实际的假想而导致架构迟迟无法落定,这种现象的术语描述,叫做“分析瘫痪”。 所以优秀的架构应该结合业务目标,在权衡之中寻求一个最优的点。 二、分布式系统在扩展性...原创 2016-11-04 15:01:12 · 365 阅读 · 0 评论 -
《架构师》期刊摘要(2015年)二
一、一个优秀的设计过程或者方法论定义了一组一致的、可以重复的步骤,可以在将一个服务端服务组件输出为一个可访问的、有用的WEB API时使用。那就是说,一个清晰的方法论可以由开发人员、设计师和软件架构师共享,以便在整个实现周期内帮助大家协同活动。一个成熟的方法论还可以随着时间的发展,随着每个团队不断发现改善和精简过程的方式而得到精炼,却不会对实现细节产生不利的影响。 1、列出所有组成部...原创 2016-11-05 19:38:44 · 270 阅读 · 0 评论 -
《架构师》期刊摘要(2015年)三
一、微服务解决我们哪些痛点呢? 1)技术架构、平台升级难:传统的单体式架构系统倾向于采用统一的技术平台或者方案解决所有的问题;而微服务的异构性,可以针对不同的业务特征选择不同的技术方案,有针对性的解决具体的业务问题。 对于单体式架构系统,初始的技术选型严格限制将来采用的不同语言或者框架的能力,没有完备的功能测试集,很难平滑的完成替换,而且系统规模越大,风险越高。基于微服务架...原创 2016-11-06 19:35:43 · 213 阅读 · 0 评论 -
Protobuf与JAVA
我们在开发一些RPC调用的程序时,通常会涉及到对象的序列化/反序列化的问题,比如一个“Person”对象从Client端通过TCP方式发送到Server端;因为TCP协议(UDP等这种低级协议)只能发送字节流,所以需要应用层将Java对象序列化成字节流,数据接收端再反序列化成Java对象即可。“序列化”一定会涉及到编码(encoding,format),目前我们可选择的编码方式: ...原创 2015-05-19 19:18:22 · 1844 阅读 · 0 评论