代码改变世界

随笔分类 -  design

系统架构设计的原则和模式

2018-03-02 17:35 by Loull, 3215 阅读, 收藏, 编辑
摘要: 1 分层架构 分层架构是最常见的架构,也被称为n层架构。多年以来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎成为事实标准,因此被大多数架构师、开发者和软件设计者所熟知。 分层架构中的层次和组件是水平方向的分层,每层扮演应用程序中特定的角色。根据需求和软件复杂度,我们可以设计N层,但大多数 阅读全文

常用限流方案的设计和实现

2017-10-24 21:44 by Loull, 2254 阅读, 收藏, 编辑
摘要: 为了保证在业务高峰期,线上系统也能保证一定的弹性和稳定性,最有效的方案就是进行服务降级了,而限流就是降级系统最常采用的方案之一。 限流即流量限制,或者高大上一点,叫做流量整形,限流的目的是在遇到流量高峰期或者流量突增(流量尖刺)时,把流量速率限制在系统所能接受的合理范围之内,不至于让系统被高流量击垮 阅读全文

分布式系统原理

2016-02-12 21:21 by Loull, 364 阅读, 收藏, 编辑
摘要: 一、分布式系统基础重要要点: 对外提供无状态节点,内部实现具体有状态或者无状态节点逻辑,节点即可以是提供服务,也可以是存储数据。 拜占庭问题,在分布式系统中的使用,目的是保证服务可用,而不是找出错误的节点,如果。 异常常见情况,机器宕机、网络异常、消息丢失、消息乱序、数据错误、不可靠的TCP。可能是 阅读全文

【转】如何实现一个配置中心

2016-02-12 20:28 by Loull, 2443 阅读, 收藏, 编辑
摘要: 问题 服务一般有很多依赖配置,例如访问数据库有连接字符串配置,连接池大小和连接超时配置,这些配置在不同环境(开发/测试/生产)一般不同,比如生产环境需要配连接池,而开发测试环境可能不配,另外有些参数配置在运行期可能还要动态调整,例如,运行时根据流量状况动态调整限流和熔断阀值。 传统配置文件方式虽然把 阅读全文

分布式系统常用思想和技术总结

2016-02-12 19:35 by Loull, 1264 阅读, 收藏, 编辑
摘要: 一、分布式系统的难点 分布式系统比起单机系统存在哪些难点呢? 1. 网络因素 由于服务和数据分布在不同的机器上,每次交互都需要跨机器运行,这带来如下几个问题: 1. 网络延迟:性能、超时 同机房的网络IO还是比较块的,但是跨机房,尤其是跨IDC,网络IO就成为不可忽视的性能瓶颈了。并且,延迟不是带宽 阅读全文

分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)

2016-02-12 18:22 by Loull, 4718 阅读, 收藏, 编辑
摘要: 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistency)(等同于所有节点访问同一份最新的数据副本) 可用性(Availability)(对数据更新具备 阅读全文

Thinking In SE

2016-02-11 21:35 by Loull, 225 阅读, 收藏, 编辑
摘要: 各种编程范式的区别 并发模型 并行架构: 位级(bit-level)并行 指令级(instruction-level)并行 数据级(data)并行 数据级并行 任务级(task-level)并行 -- 多处理器,按内存模型分类:共享内存模型,分布式内存模型 并发模型: 线程与锁 函数式编程消除了可变 阅读全文

浅谈SOA面向服务化编程架构(dubbo)

2015-12-30 17:40 by Loull, 5626 阅读, 收藏, 编辑
摘要: dubbo 是阿里系的技术。并非淘宝系的技术啦,淘宝系的分布式服务治理框架式HSF啦,只闻其声,不能见其物。而dubbo是阿里开源的一个SOA服务治理解决方案,dubbo本身集成了监控中心,注册中心,负载集群...等等。代码和整体的框架还是很优雅滴呀! github地址 https:... 阅读全文

可扩展架构设计的三个维度

2015-12-30 17:37 by Loull, 6215 阅读, 收藏, 编辑
摘要: 业界对于可扩展的系统架构设计有一个朴素的理念,就是:通过加机器就可以解决容量和可用性问题这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可!对于一个规模迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上... 阅读全文

浅谈服务化架构

2015-12-30 16:58 by Loull, 869 阅读, 收藏, 编辑
摘要: 这两年来,在服务化架构设计上的实践比较多,在此对关于服务化设计一些经验稍作总结,知识经验水平有限,如有欠缺和不准确的地方,还请指出修正!我在《可扩展架构设计的三个维度》一文里(回复“06”可阅读此文),谈到服务化架构(SOA)在保证系统扩展性上,是一个比较好的架构设计实践。也谈到了通过服务网关... 阅读全文

DB proxy, mysql proxy

2015-09-28 16:25 by Loull, 956 阅读, 收藏, 编辑
摘要: db proxy在大型互联网站的数据库部署中,部署最多的数据库为MySQL。随着MySQL中Innodb存储引擎对事物的支持,MySQL在互联网公司部署中,应用量越来越多。典型应用MySQL的公司有Google、Baidu、Taobao等大型互联网公司。MySQL的优势在于其高扩展性和价格优势等。实... 阅读全文

再谈CAP

2015-06-05 15:24 by Loull, 203 阅读, 收藏, 编辑
摘要: CAP定理设计者Eric Brewer作为Google基础设施副总裁在时隔二十年后重谈CAP定律。Eric Brewer目前正在推动Kubernetes和容器建设,在这篇采访中:Google systems guru explains why containers are th,他认为容器是云计算的... 阅读全文

反射机制

2014-10-17 16:48 by Loull, 196 阅读, 收藏, 编辑
摘要: 1、反射的构造过程直接构造 1、加载程序集 2、根据类名构造反射构造1、加载程序集 2、查找需要构造类的类名 3、根据类名构造能不用反射还是别用反射,因为毕竟要以性能做为代价, 不过在某些特定场合,还是只能用它,所以要自己根据实际情况来掌握.2、反射与自身去实例化有何区别,用反射的意义何在?1)当你... 阅读全文

《恰如其分的软件架构:风险驱动的设计方法》——读书笔记

2014-09-26 16:48 by Loull, 1941 阅读, 收藏, 编辑
摘要: 个人觉得本书概念太多,软件的架构和开发不是概念拼成的,一些经验性的东西用合适的词描述就行。所谓风险驱动,其实就根据项目情况选择合适的设计力度,避免过度设计。而对于复杂的软件系统,精心设计还是非常重要的,在开发前和开发中都会有设计的问题。另外,对于一个软件工程师,对一些架构模式需要有些了解,在脑海中构... 阅读全文

【转】分布式理论-CAP理论

2014-08-24 00:23 by Loull, 552 阅读, 收藏, 编辑
摘要: 一 CAP理论简述 CAP (Consistency, Availability, Partition Tolerance,) 理论是NoSQL数据库管理系统构建的基础。 强一致性:等同于所有节点访问同一份最新的数据副本 可用性:每一个操作总是能够在一定的时间内返回结果,这里需要注意的是"一定时间内 阅读全文

一些系统设计问题

2014-08-18 17:40 by Loull, 332 阅读, 收藏, 编辑
摘要: 1. 举出一个例子,在这种情况你会更倾向于使用抽象类,而不是接口?这是很常用但又是很难回答的设计面试问题。接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。下面有几个点可以帮助你回答这个问题:在 Java 中,你只能继承一个类,但可以实现多个接口。... 阅读全文

UML类图

2014-05-22 16:44 by Loull, 559 阅读, 收藏, 编辑
摘要: 各种关系的强弱顺序: 泛化=实现>组合>聚合>关联>依赖一、类与类之间的关系(1):关联关系:实线连接、成员变量 在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式。 关联(Association)关系是类与类之间最常用的一种关系,它是一种结... 阅读全文

【crawler】heritrix 3 使用

2012-11-30 15:50 by Loull, 383 阅读, 收藏, 编辑
摘要: https://webarchive.jira.com/wiki/display/Heritrix/A+Quick+Guide+to+Running+Your+First+Crawl+Job 1、下载heritrix3后解压 2、命令行到bin目录 >heritrix.cmd –a admin:ad 阅读全文

【设计】【爬虫】针对某一主题做的爬虫,使用Jsoup解析

2012-09-06 23:59 by Loull, 667 阅读, 收藏, 编辑
摘要: 作为总结:1、这次做了一个非常糟糕的设计:我采用了深度优先搜索,当初之所以采用这种方式,是因为我要爬的数据都在搜索树的叶节点上,这样可以在代码中少用一个队列,事实上,这是个烂到家的设计。非叶节点的页面会长时间占着内存。一般爬虫会采用广度优先搜索,把要访问的连接保存在一个队列里面,好处:A、访问过的页面占用的内存能被回收B、速度更快,每个页面只解析一次。(虽然深度优先也是只解析一次,但虚拟机要帮忙维护很多小队列,以保持每个页面解析出来的链接)C、容易实现多线程并行爬数据。只要保持对队列的同步,多个线程就可以同时爬数据。2、对异常的态度A、对待致命错误,要退出程序,不要吸收。B、对待非致命异常,吸 阅读全文

【设计】android上RSS聚合器

2012-08-31 18:52 by Loull, 284 阅读, 收藏, 编辑
摘要: 在android上做了个RSS聚合器,虽然是个很简单的东西,但我还是必须说还是有点设计的。 1、最简单实现 写几个用到的Activity,在这几个界面间跳转,完成所有功能。 缺点:1、单线程,UI会被网络访问阻塞 2、实现逻辑为直线线,对错综复杂的逻辑跳转回显得很笨拙 2、C/S模式实现 主服务MainService为主线程,把各种要做的事情抽象为任务Ta... 阅读全文
点击右上角即可分享
微信分享提示