当前位置:网站首页>微服务架构基础 微服务相关概念及基础知识 贺兰的微博
微服务架构基础 微服务相关概念及基础知识 贺兰的微博
2022-08-09 04:56:00 【贺兰山的那个脉】
**
微服务架构基础
** 学习笔记
第一章 认识微服务
1.1 为什么需要微服务
总结 : 传统架构满足不了实际需求,微服务架构随之而来
问题 : 传统架构为什么满足不了需求,怎么解决这个问题 ?
1.1.1
早期单体架构示例
网上商城系统,Java Web工程通常会被打包成WAR包部署在web服务上,普通工程会以jar包的形式包含在war包中.
当用户量不多时,此种情况可以满足需求;当用户增加时,一台机器满足不了系统的负载,此时可以进行水平扩展
(PS: 懒得动手,书中拷图)
随着时间的发展,此类架构的问题随之产生:
1.应用复杂度增加,维护更新困难
2.易造成资源浪费;服务添加不是功能上添加,只是重复部署相同war包实现服务拓展
3.影响开发效率,应用越大,启动时间越长,造成开发和调试中大量时间浪费
4.应用可靠性低;所有模块运行在一个进程中,任何一个模块出现bug会导致整个程序崩溃
5. 不利于技术更新;选中技术,做替换需要整体替换,工作量巨大
1.1.2 如何解决传统应用结构问题
SOA架构
SOA优点 :
1.项目拆分利于提高开发效率
2.模块拆分解耦
3.提高复用性
4.扩展应用友好
5.降低服务改变对用户的影响
SOA存在问题:
和单体应用相同,随着业务功能的增多,SOA服务同样会变的很复杂
1.2 微服务架构是什么
1.2.1 微服务架构定义: 自行百度
微服务架构优点 :
1.复杂度可控
2.可独立部署
3.技术选型灵活
4.易于容错和扩展
5.职责单一
微服务架构不足:
1.开发人员需处理创建分布式系统的复杂性
2.部署复杂
3.资源消耗较大
微服务架构与SOA的区别:
1.3 如何构建微服务架构
1.3.1 微服务的拆分
通过业务功能分解并定义业务功能相定义的服务
将域驱动分解为多个子域
按照动词或用例分解,并定义负责特定操作的服务,例如一个负责完成订单的航运服务
1.3.2 微服务架构的组件
服务注册中心 : 注册系统中所有服务的地方
服务注册 : 服务提供方将自家调用地址注册到注册中心,让服务调用方可以方便找到自己
服务发现 : 服务调用方从服务注册中心找到自己需要调用的服务的地址
负载均衡 : 服务提供方一般以多实例的方式提供服务,使用负载均衡能让服务调用方找到合适的服务节点
服务容错 : 通过断路器(也称熔断器)等一系列服务保护机制,能让服务调用方在调用异常服务时快速的返回结果,避免大量的同步等待
服务网关 : 也称为API网关,是服务调用的唯一入口,可以在这个组件中实现用户鉴权,灰度发布,动态路由,负载限流等功能
分布式配置中心: 将本地化的配置信息(properties,yml,yaml等)注册到配置中心,实现程序包在开发,测试,生产环境的无差别性,方便程序包的迁移
判断一个架构是否满足微服务 :
根据业务模块划分服务种类
每个服务可独立部署并相互隔离
通过轻量级API调用服务
良好的高可用性
1.3.4 微服务架构的技术选型
1.微服务实例的开发
springboot,WildFlySwarm,KumuluzEE
2.服务的注册与发现
Spring Cloud Eureka,dubbo,zookeeper,Consul,Etcd,SpringBootAlibaba Nacos
3.负载均衡
Spring Cloud Ribbon ,dubbo
4.服务容错
Hystrix,Spring Cloud Hystrix
5.API网关
Spring Cloud Zuul,Spring Reactor,Netty,Kong等
6.分布式配置中心
Spring Cloud Config
7.测试
swagger,RestServices
8.部署
docker
9.持续集成
通过jenkins搭建自动化部署系统
本章学习到此结束,用了大概三个小时左右吧,由于上一家公司项目多为单体架构,对分布式的相关知识了解生疏,特通过本书进行了回顾学习
边栏推荐
- JS-全局dom对象的使用---使用htm样式和js函数动作的完全分离
- 【基于富瀚6630使用/dev/fb0显示设备和TDE模块渲染bmp图像】
- [OpenCV] - Find and draw contours
- 【ITRA】2022年ITRA赛事注册流程 从0-1
- P1163 银行贷款
- 数据库设计---三范式和反范式设计
- 抖音直播间带货最新玩法和运营技巧
- 通讯录(文件版)(C语言)(VS)
- 【暑期每日一题】洛谷 P5729 【深基5.例7】工艺品制作
- [Developers must see] [push kit] Collection of typical problems of push service service 2
猜你喜欢
equals and ==
Alibaba Cloud Tianchi Contest Question (Machine Learning) - Prediction of Industrial Steam Volume (Complete Code)
杰理之播歌曲前后音量大小不一样【篇】
2022下半年深圳信息系统项目管理师认证招生简章
【HMS core】【ML kit】机器学习服务常见问题FAQ
【Harmony OS】【ARK UI】轻量级数据存储
FastDFS快速使用及介绍
【Harmony OS】【ArkUI】ets开发 创建视图与构建布局
[Harmony OS] [ARK UI] ETS context basic operations
【Harmony OS】【ARK UI】Date 基本操作
随机推荐
[Developers must see] [push kit] Collection of typical problems of push service service 2
TASSEL software imports plink format file error
2022-08-08 mysql慢SQL-Q18-10GB数据量-mysql/innodb测试
【luogu U142356】勇者的后缀(SA)(主席树)(二分)
Ridge regression and LASSO regression
【Harmony OS】【ARK UI】Date 基本操作
`英语` 2022/8/8
学习笔记_numpy图片基本操作_自用
Divisible property 1
Parameters in dynamic libraries cannot be modified through macro definitions or global variables in header files
杰理之开关降噪语音识别没有用【篇】
FastDFS快速使用及介绍
Golang入门教程
Why do enterprises need business intelligence BI in the digital age
力扣202-快乐数——哈希集合
杰理之播歌曲前后音量大小不一样【篇】
JS-DOM-全局、局部、隐式变量,数组()\函数、 prompt输入对话框、confirm(确定用户的决定-弹出对话框)
MySQL---performance schema
【Harmony OS】【ArkUI】ets开发 创建视图与构建布局
【Harmony OS】【ArkUI】ets开发 基础页面布局与数据连接