01 微服务

张开发
2026/4/13 7:34:15 15 分钟阅读

分享文章

01 微服务
一、认识微服务1.1 微服务架构演变单体架构将业务的所有功能集中在一个项目中开发打成一个包部署简单方便高度耦合拓展性差适合小型项目如学生管理系统分布式架构根据业务功能对系统进行拆分每个业务模块作为独立项目开发称为一个服务松耦合扩展性好但架构复杂难度大适合大型互连网项目如京东、淘宝微服务是一种经过良好架构设计的分布式架构方案优点拆分粒度更小服务更独立耦合度更低缺点架构非常复杂运维、监控、部署难度提高1.2 微服务技术对比1.3 微服务结构—SpringCloud二、服务拆分2.1 服务拆分服务拆分注意事项不同微服务不要重复开发相同业务微服务数据独立不要方位其他微服务的数据库微服务可以将自己的业务暴露为接口共其他微服务调用2.2 服务间调用三、Eureka3.1 概念定义Eureka是Netflix开源、基于REST的服务注册与发现组件是Spring Cloud微服务架构的核服务治理工具相当于微服务集群里的动态通讯录/服务注册中心作用主要解决微服务拆分后服务实例动态扩容/缩容、IP/端口变化、故障下线时服务之间如何自动寻址、避免硬编码地址、保证调用可靠的问题核心两大组件Eureka Server服务注册中心、Eureka Client客户端、嵌入微服务3.2 核心两大组件Eureka Server服务注册中心作用维护服务注册表存储所有已注册服务的实例信息服务名、IP、端口、健康状态功能接受注册、响应查询、心跳检测、自动剔除失效实例、集群数据同步、提供Web管理控制台部署支持单节点/集群多Server互相复制注册表保证高可用Eureka Client客户端、嵌入微服务服务提供者启动时自动注册自身信息到 Server每 30 秒发心跳续约默认证明存活一次业务中被其他微服务调用的服务提供接口给其他微服务服务消费者启动时拉取全量注册表并本地缓存之后每 30 秒增量更新用服务名如 user-service 调用不用写死 IP / 端口一次业务中调用其他微服务的服务调用其他微服务提供的接口内置配合 Ribbon 实现客户端负载均衡轮询等策略注意提供者和消费者角色是相对的3.3 核心工作流程一句话服务注册—心跳保活—服务发现—失效剔除注册微服务启动Client向Server发送注册请求写入注册表续约Client每30秒发心跳Server超过90秒没有收到心跳标记DOWN并剔除发现消费者从Server拉取服务列表本地缓存按服务名调用自我保护15分钟内心跳丢失85%进入保护模式不剔除任何实例避免网络抖动误删3.4 核心作用解耦地址硬编码不用在代码/配置里写死IP:端口用服务名调用扩容/迁移/重启都不用改配置自动健康检查与容错自动剔除宕机实例避免请求打到无效节点提供系统稳定性负载均衡与弹性伸缩多实例自动加入列表配合Ribbon做负载均衡扩容/缩容无感无需人工干预服务治理可视化Web控制台查看所有服务、实例状态、心跳方便运维监控高可用保障Server集群客户端缓存即使部分Server挂了仍可用本地缓存调用3.5 适用场景现状适用Spring Cloud微服务架构Java生态、服务数量多、动态扩缩容、需要服务治理的分布式系统现状Netflix已停止维护进入维护模式Spring Cloud 2020 推荐替代Nacos、Consul、K8s、Service;3.6 简单示例Spring BootServer加EnableEurekaServer配置端口、集群节点Client提供者/消费者加EnableDiscoveryClient配置服务名、Server地址调用用RestTemplateLoadBalanced直接写http://user-service/getUser;搭建eureka服务服务注册服务发现

更多文章