架构的终极目标——可扩展

栏目: Java · 发布时间: 5年前

内容简介:不同的拆分方式,本质上决定了系统的扩展方式

点击蓝色“ 乔志勇笔记 ”关注我哟

加个“ 星标 ”,第一时间获取推送的文章哦

(1)可扩展的思想

不同的拆分方式,本质上决定了系统的扩展方式

(2)可扩展方式

一、面向流程拆封

1)分层架构

要点:

1、需要保证各层之间的差异足够清晰,边界足够明显,隔离关注点,让人看到架构图后就能看懂整个架构

2、层层传递

常见划分:

1、c/s 架构 、b/s 架构

2、mvc 架构、mvp架构

3、逻辑分层架构

操作系统内核结构、tcp/ip架构

二、面向服务拆分

1)SOA

背景:

SOA的诞生背景是用来兼容 庞大、复杂、异构的企业级系统,

解决传统IT系统重复建设和扩展效率低的问题

关键概念:

1、粗粒度的服务

2、ESB/企业服务总线

服务定义、服务路由、消息转换、消息传递,是重量级的实现

3、松耦合

减少服务间的依赖和影响,实现起来具有复杂性

2)微服务

背景:

适合于快速、轻量级、基于web的互联网系统

关键概念:

1、small/微

服务拆分粒度符合三个快枪手原则

有基于业务逻辑、基于可扩展、基于可靠性、基于性能拆分等多种相结合的方式

2、lightweight/轻量级交互

微服务推荐使用统一的协议和格式,例如restful协议和rpc协议,无须esb这样的重量级实现

仅仅用来做消息的传递,对消息和内容一无所知

3、automated/自动化

重点关注基础设施的建设

架构的终极目标——可扩展

优先级:

1.服务发现、服务路由、服务容错

2.接口框架、api框架

3.自动化部署、自动化测试、配置中心

4.服务监控、服务跟踪、服务安全

3)对比图

架构的终极目标——可扩展

三、面向功能拆分

1)微内核架构/插件化架构

基本架构:

核心系统和插件模块

设计关键点:

1、插件管理

插件注册表包含每个插件模块的信息,包括名字、位置、加载时机

2、插件连接

与核心系统如何连接

3、插件通信

案例解析:

1、OSGI架构解析

特性:动态化、热插拔、高复用性、高效性、扩展方便

层次:

1.模块层(module层)

实现插件bundle的管理

2.生命周期层(lifecycle层)

控制bundle的安装、更新、启动、停止、卸载

3.服务层(service层)

通过注册中心 实现插件间的通信

2、规则引擎架构解析

特性:可扩展、易理解、高效率

流程:

1.开发提炼多个规则,

2.业务人员将规则排列组合,配置成业务流程

3.规则引擎执行业务流程实现业务

层次:

1,插件管理

规则就是插件,引擎就是微内核架构的内核

2.插件连接

规则引擎的插件连接实现机制就是规则语言

3.插件通信

单个规则不需要通信,输出数据流或者事件

举例:

JBoss Drools,Esper

参考:李运华的从0开始学架构

限时分享面试&学习福利资源

好资料第一时间分享,中华石杉老师的 分布式面试突击 视频教程,最清晰整体的 微服务全面解读 的PDF, 体系化的 Java 路线 资料整理的Github, 亿级电商架构 的视频实战课程,你值得拥有

获取方式: 关注公众号 乔志勇笔记 , 后台回复"学习资料" !!!

架构的终极目标——可扩展

近期文章:

如何开始架构设计

高性能架构模式

储存高可用架构

到底如何理解CAP

微服务架构————基本组件

微服务实战问题

微服务架构进阶

秒杀系统设计

分布式数据一致性理解

5种分布式锁实现的对比?

Java并发编程学习体系

java8 Stream 史上最全总结

Java 网络编程"初探"

redis 知识点总结

java 核心技术学习总结 (一)

spring中"投机取巧"地限制 用户同时登陆

如果你喜欢本文

请长按二维码,关注 乔志勇笔记

架构的终极目标——可扩展

转发 朋友圈 ,是对我最大的支持哟

如果你喜欢这篇文章,在看,转发吧。

相信明天更加美好 (*^__^*) 


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解 Flask

深入理解 Flask

[美]Jack Stouffer / 苏丹 / 电子工业出版社 / 2016-7-1 / 79.00

Flask 是一种具有平缓学习曲线和庞大社区支持的微框架,利用它可以构建大规模的web应用。学习上手Flask非常轻松,但要深入理解却并不容易。 本书从一个简单的Flask应用开始,通过解决若干实战中的问题,对一系列进阶的话题进行了探讨。书中使用MVC(模型-视图-控制器)架构对示例应用进行了转化重构,以演示如何正确地组织应用代码结构。有了可扩展性强的应用结构之后,接下来的章节使用Flask......一起来看看 《深入理解 Flask》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具