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

栏目: 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中"投机取巧"地限制 用户同时登陆

如果你喜欢本文

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

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

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

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

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


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

查看所有标签

猜你喜欢:

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

Python源码剖析

Python源码剖析

陈儒 / 电子工业出版社 / 2008-6 / 69.80元

作为主流的动态语言,Python不仅简单易学、移植性好,而且拥有强大丰富的库的支持。此外,Python强大的可扩展性,让开发人员既可以非常容易地利用C/C++编写Python的扩展模块,还能将Python嵌入到C/C++程序中,为自己的系统添加动态扩展和动态编程的能力。. 为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Pyth......一起来看看 《Python源码剖析》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试