1.单一职责:微服务拆分粒度更小,每个服务都对应唯一的业务能力,做到单一职责
2.自治:团队独立,技术独立,数据独立,独立部署和交付
3.面向服务:服务提供同一标准的接口,与语言和技术无关
4.隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题
1.1 什么是springcloud?springcloud是微服务中的其中一员是目前国内使用最广泛的微服务框架,它是一款经过良好设计的分布式框架,可以说微服务是在给分布式架构制定一个标准,相较于传统的分布式架构,springcloud分的粒度更小,耦合度进一步降低,数据更独立。
springcloud集成了各种微服务的功能组件,并基于Springboot实现这些组件的自动装配,提供了很好的开箱即用体验。
常见的组件包括:
服务注册与发现 : Eureka
服务远程调用 :OpenFeign
服务链路监控 :Zipkin
统一配置管理 : SpringcloudConfig
统一网关路由 :SpringcloudGateway
流控,降级,保护 :Hystix
springcloud底层是基于Springboot的,因此有版本兼容问题,hoxton 用springboot 2.2 或 2.3
微服务拆分原则:
1:不同的微服务不要开发相同业务
2:微服务数据独立,不要访问其他微服务的数据库
3:微服务可将自己的业务暴露为接口,供其他微服务调用
2.springcloud架构构建步骤:一:创建父工程
1 . new project (创建Maven工程)
对IDEA进行所需设置
2. 在pom文件下导入父依赖
properties :统一管理依赖版本
dependencyManagement:提供了一种管理依赖版本号的方式。子模块需要用到父级所有(存在)的依赖时,不需要声明version,直接继承过来用,当依赖需要升级时,直接升级父级依赖就行,不用在子模块中一一升级,当单个模块需要升级依赖时,只需要在该模块pom文件中声明version即可,很方便。
二:在父工程下创建子工程
1 . new module (创建Maven父工程)payment8001模块 8001是端口号
不用√
2. 在pom文件下导入所需依赖
这只是一部分
3. 写yaml
4. 写主启动类
不连接数据库的话可以在springbootApplication后面加上(exclude = DataSourceAutoConfiguration.class)表示取消自动装配数据源,不然可能会报错
5. 写业务类
可以创建一个对象作为万能的封装箱,
成功拿到数据
以相同的方式创建 order80模块 ,但不需要写dao,service层写一个接口封装与payment模块service层中相同的方法,直接cp过来即可
在该模块中需要创建一个配置类,如上图,RestTemplate提供了远程调用的方法,为访问restfull接口提供了便
第一个参数为 远程调用的服务地址,
第二个为 要传的参数,
第三个为 http响应转换被转换的类型(就是该方法的返回类型)
未完....



