1.微服务架构理论基础入门

微服务热度

在这里插入图片描述
由图中可见,微服务在这几年的热度越来越高,越来越多的企业开始使用微服务,从而让微服务越来越火。

单体应用的痛点

1.部署效率低下
2.团队协作开发成本⾼(修改代码、合并分支)
3.系统⾼可⽤性差(一个包里面,一旦一个类出问题就会导致整个程序不能用)
在这里插入图片描述

什么是服务化

1)把传统的单机应⽤中通过JAR包依赖产⽣的本地⽅法调⽤,改造成通过RPC、HTTP产⽣的远程⽅法调⽤
2)把⽤户模块从单体应⽤中拆分出来,独⽴成⼀个服务部署
3)⽤户模块就可以独⽴开发、测试、上线和运维,可以交由专⻔的团队来做,与主模块不耦合

在这里插入图片描述

什么是微服务

1)一种架构风格
2)开发单个应用作为一系列小型服务的套件,其中每个服务都运行在自己的进程中,并且通过轻量级的机制实现彼此间的通信,这通常是HTTP资源API。
3)这些服务是围绕着业务功能构建的,并且可以通过完全自动化的部署机制进行独立部署。
4)这些服务的集中式管理做到了最小化(例如docker相关技
术),每一种服务都可以通过不同的编程语言进行编写,并且
可以使用不同的数据存储技术

微服务的特点

1)组件以服务形式来提供
2)是产品不是项目
3)轻量级通信、独立进程
4)分散治理、去中心化治理
5)容错性设计,整体性容错性提高了,一个出错了不影响其他的,但是个人压力大了
6)会带来团队组织架构的调整,如下图所示:

在这里插入图片描述
垂直团队组织架构大公司比较常见

微服务优点

1)服务简单、便于学习和上手,相对易于维护
2)独立部署,灵活扩展
下图是左边单体部署,右边是微服务部署
在这里插入图片描述
3) 技术栈丰富

微服务缺点

1)运维成本过高
2)接口可能不匹配
3)代码可能重复
4)架构复杂度提高

下图不同复杂度情况下微服务和单体应用的对比,所以需要合理的选择
在这里插入图片描述

微服务有两大门派

1)Spring Cloud:众多子项目(网关、配置器等经过实际考验的框架)
2)dubbo:高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现

dubbo:zookeeper+dubbo+springmvc/springboot
通信方式:rpc
注册中心:zookeeper,nacos
配置中心:diamond(淘宝开发)

spring cloud:spring+Netflix
通信方式:http restful
注册中心:eureka,consul,nacos
配置中心:config
断路器:hystrix
网关:zuul,gateway
分布式追踪系统:sleuth+zipkin
dubbo 提供的能力只是 Spring Cloud 的一部分子集

在这里插入图片描述
图中的无只表示dubbo不提供,但是dubbo可以和其他的框架整合

微服务拆分

什么时候进行服务化拆分

1)第⼀阶段的主要⽬标是快速开发和验证想法
2)进⼀步增加更多的新特性来吸引更多的⽬标⽤户
3)同时进⾏开发的⼈员超过10⼈,这个时候就该考虑进⾏服务化拆分

不适合拆分的情况

1)小团队,技术基础较薄弱
2)流量不高,压力小,业务变化也不大(如:企业办公系统)
3)对延迟很敏感的低延迟高并发系统
4)业务稳定、迭代周期长

服务化拆分的两种姿势

1)纵向拆分(按业务维度拆分)
2)横向拆分 (按公共领域拆分)
注意:结合业务综合分析

微服务重要模块

1)服务描述
2)注册中⼼
3)服务框架
4)负载均衡
5)熔断和降级(保险措施)
6) 网关(统一网关提供给用户,方便用户)
7)配置中心

小结

本文章只是对微服务的发展做了简单的概述,后期将对微服务的各个模块的使用进行演示。

参考文章:

链接: http://www.martinfowler.com/articles/microservices.html.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值