一、什么是 | ||
微:体积小 服务:区别于系统,用户可以感知到的最小功能集 | ||
二、为什么要用(优点) | ||
与微服务相对的为 : 单体架构 | ||
单体架构 | 微服务 | |
全部模块耦合在一起 | 每个模块相当于一个单独的项目,独立运行在自己的进程里 | |
共用一个数据库,存储单一 | 多种存储方式redis,mysql | |
开发所用技术一样 | 可使用不同的开发技术,灵活 | |
三、如何用(出了问题的解决方案) | ||
1.提供统一服务入口,让微服务对前台透明 | ||
提供安全,过滤,流控等API管理功能 | ||
2.服务之间的通讯(服务调用) | ||
REST(JAX-RS,Spring Boot) | ||
RPC(Thrift, Dubbo) | ||
异步消息调用(Kafka, Notify) | ||
3.服务查找 | ||
基本都是通过zookeeper等类似技术做服务注册信息的分布式管理,即服务注册 | ||
当服务上线时,服务提供者将自己的服务信息注册到ZK(或类似框架) | ||
,并通过心跳维持长链接,实时更新链接信息 | ||
4.服务挂了(应对措施) | ||
重试机制 | ||
限流 | ||
熔断机制 | ||
负载均衡 | ||
降级(本地缓存 | ||
负载均衡常用策略 | ||
1.随机(随机分配给内部的多个服务器) | ||
2.轮询(轮流分配给内部的服务器) | ||
3.加权轮询(根据每个服务起的不同处理能力,分配不同的权值) | ||
四、出现的问题(缺点) | ||
运维要求高 | ||
分布式的复杂程度 | ||
重复劳动 | ||
出现问题不容易找到 | ||
五、什么项目适合用微服务 | ||
按照业务功能的独立性划分 | ||
若业务偏向底层、操作系统内核、存储系统、网络系统等, | ||
功能和功能之间有着紧密的配合关系,如果强制拆分为较小的服务单元,会让集成工作量急剧上升 | ||
六、现有的微服务框架 | ||
Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构) | ||
Dubbo | ||
加监控日志的功能 |
微服务理解
最新推荐文章于 2025-08-04 23:47:02 发布