专栏名称: 京东成都研究院
京东商城成都研究院信息平台
目录
相关文章推荐
成都本地宝  ·  明日正式开通!成都天府机场高速出行更方便! ·  2 天前  
成都本地宝  ·  成都5个严重被低估的古镇/村落!全部免费! ·  2 天前  
成都本地宝  ·  2025上半年成都教师公招来啦!还有蜀道集团 ... ·  3 天前  
51好读  ›  专栏  ›  京东成都研究院

架构设计与思想

京东成都研究院  · 公众号  · 成都  · 2018-06-11 17:09

正文

一、系统架构基础

1、对系统架构的理解

关于系统架构目前没有一个明确的定义。有从规划、实现与步骤角度去了解,有从架构分类方面去定义。这次我提的理念是:系统架构的目标是解决利益相关者的关注点。

每个系统都有一个架构,架构由架构元素以及相互之间的关系构成,系统是为了满足利益相关者的需求构建的;

利益相关者都有自己的关注点;

架构由架构文档描述,并且描述了一系列的架构视角,而这些视角其实就是去解决利益相关者的关注点。

功能关注点

功能=改变的原因

处理功能关注点,需要注意以下三原则,并且通过模式来方式来进行实现。

1.S.O.L.I.D

S-单一职责原则

O-开放封闭原则

L-李氏替换原则

I-接口隔离原则

D-依赖反转原则

2. K.I.S.S

KEEP IT SIMPLE,STUPID

3.高内聚 低耦合

4 模式的三个层次

Idiom

Design Pattern

Architecture Pattern

第一层是Idiom ,代码层面,就是惯用的代码,策略,是指一套API,方法等

第二层是设计模式,主要GOF提出来的23种常用的设计模式。立足于高级抽象层面进行探讨,而非设计标注或者编程语言,大大降低系统复杂度。

第三层是架构模式:它是一个通用的,可重用的解决方案。比如:分层模式、微服务模式等

非功能关注点

高性能:高吞吐量下的延迟问题

高可用性:几个9

高伸缩性:线性

1 高性能

缓存:浏览器或者APP客户端缓存、CDN缓存、接入层缓存(如:nginx缓存)、应用层缓存(堆内缓存、对外缓存、磁盘缓存)、分布式缓存

异步并发:当用户请求达到服务端时,比如商品详情页,他涉及到很大属性,由于目前在微服务这个大环境下,就会存在大量的http,soa服务的调用。如果是使用同步调用来获取数据,这个线程都是出于阻塞状态,降低了系统的吞吐量。这个时候我们就需要使用异步来提升吞吐量了。目前java这方面的开源框架有: httpAsyncClient,thrift等。

扩容:量越来越大,单台服务器无法处理这么大的流量,这就需要分而治之的思想来对待了。扩容包括单体应用垂直扩容和水平扩容。垂直扩容:就是对硬件资源进行提升,比如CPU和内存。水平扩容:就是增加更多的应用镜像,通过负载均衡来分摊压力。

最后涉及到高性能的比如数据层索引优化、性能测试等。

2 高可用

首先了解一个原则:CAP,一个分布式系统中,一致性,可用性和分区容错性。三者不可兼得。在设计系统架构是是无法同时满足CAP这三个特性,那么我们怎么样来权衡选择呢?选择的关键就是 取决于业务场景。对于我们的互联网应用,特点就是机器数量庞大,部署节点分散,网络故障是常态。可用性是必须保证的,通常常见的高可用5个9,6个9的服务稳定性,其实本质就是他放弃了C,选择AP。

保证系统的高可用方式有一下几种:

隔离:出现故障的时候,能限定他传播的范围和影响范围。就应该对其进行隔离,不会出现雪球效应。隔离包含:进程隔离,线程隔离,集群隔离,机房隔离,读写隔离,动静隔离,爬虫隔离。







请到「今天看啥」查看全文