
1. 微服务架构1.1 介绍在分布式系统下当部署的服务越来越多的时候重复的代码就会越来越多服务的调用关系也会越来越复杂可以把一些通用的会被多个上层服务调用的共享业务提取成独立的基础服务组成一个个微笑的服务这就是微服务简单来说微服务就是很小的服务小到一个服务只对应一个单一的功能只做一件事这个服务可以单独部署运行微服务之间可以采用Rest和RPC协议进行通行为什么需要RPC它解决了什么问题在微服务或分布式系统中服务部署在不同服务器上。如果没有RPC你需要手写Socket代码、定义数据格式、处理重试和异常极其繁琐。RPC框架帮你搞定网络通信TCP/UDP/HTTP2。序列化协议将对象转为二进制流如 Protobuf、JSON、Hessian。服务发现在动态IP环境中找到目标服务器。负载均衡与容错超时重试、熔断。1.2 挑战优点易开发和维护每个微服务负责的业务比较清新容错性高一个服务发生故障可以使故障隔离在单个服务中不影响整体服务故障扩展性好每个服务器都是独立运行的可以结合项目实际情况进行扩展技术型灵活每个服务都是单独的团队来运维可以选择合适的技术栈挑战服务依赖随着服务的数量增加服务之间的关系也会变的更加复杂一个服务更改需要考虑对其他服务的影响运维成本开发和测试服务监控负载均衡.......2. Spring Cloud 介绍Spring Cloud 为开发人员提供了工具可以快速构建分布式系统中一些常见的模式例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、短生命周期微服务和契约测试3. 环境和工程搭建3.1 服务拆分1. 单一职责单一职责原则是面向对象设计中的一个基本原则它指的是一个类应该专注单一功能在微服务架构中一个微服务也应该只负责一个功能或业务领域每个服务应该有清晰的定义和边界只关注自己的特定业务领域2. 服务自治服务自治是指每个微服务都应该具备高度自治的能力即每个服务要能够做到独立开发独立测试独立构建独立运行3. 单向依赖微服务之间需要做到单向依赖严禁循环依赖、双向依赖3.2 业务准备简单来说该页面提供了一下信息1. 订单信息2. 商品信息根据服务的单一职责原则将服务拆分为订单服务商品服务订单服务提供订单id获取订单详细信息商品服务根据商品id返回商品详细信息3.3 工程搭建创建父工程DependencyMangement 和 Dependencies1. Dependencies 将所依赖的jar直接加到子项目中自项目也会继承该依赖2. DependencyMangement 只是声明依赖并不实现jar包引入如果子项目中需要用到相关依赖需要显示声明如果子项目中没有指定具体版本会从父类项目中读取version创建子项目订单服务商品服务3.4 远程调用实现思路 order-service服务向product-service服务发送一个http请求把得到的返回结果和订单结果融合起来返回调用方定义RestTemplate修改order-service中的OrderService从SpringBoot 3.0 开始支持的一个HTTP请求工具它是一个同步的REST API 客户端提供了常见的REST请求方案的模板RESTRepresentation State Transfer表现层资源状态转移是一种软件架构风格4. 项目存在的问题远程调用时URL的IP和端口号是写死的如果更换IP需要修改代码多机部署分摊压力远程调用时URL容易写错而且复用性不高所有的服务都可以调用该接口是否有风险........除此之外微服务架构还面临很多问题接下来我们学习如何使用Spring Cloud 来解决这些问题