学习资料来源于视频:https://www.bilibili.com/video/BV1LQ4y127n4
微服务技术对比
Dubbo | SpringCloud | SpringCloudAlibaba | |
---|---|---|---|
注册中心 | zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo、Feign |
配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos |
服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
服务监控和保护 | dubbo-admin,功能弱 | Hystrix(服务保护技术) | Sentinel |
Dubbo早在2012年开源的,不是一个完善的微服务技术,主要用于远程调用,配置中心、服务网关都没有实现。
SpringCloud整合了很多著名的微服务技术,形成了一套完整的微服务技术体系,有完善的服务注册中心,还实现了专业的配置中心SpringCloudConfig,也提供了Hystrix服务保护技术(隔离,熔断、降级)。
SpringCloudAlibaba是在SpringCloud的基础上的,实现了自己的注册中心Nacos,支持了Dubbo和Feign两种方式的调用。
认识SpringCloud
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state).
官方介绍:Spring Cloud为开发者提供了工具,可以快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。
SpringCloud集成了各种微服务功能组件,并基于Springboot实现了这些组件的自动装配,从而提供了良好的开箱即用体验
微服务拆分注意事项
1.不同的微服务,不要重复开发相同的业务
2.微服务数据独立,不要访问其他微服务的数据库
3.微服务可以将自己的业务暴露为接口,供其他微服务调用。
项目初始化
导入项目:https://gitee.com/lookoutthebush/cloud-demo
导入项目,项目中只有两个子项目,order-service和user-service,我把他上传到了gitee
创建数据库表:
需要创建2个数据库,cloud_user和cloud_order。两个数据库的初始化sql放到了sql文件夹下。
记 得 改 写 各 自 项 目 下 的 数 据 库 配 置 。 \color{#ff0000}{记得改写各自项目下的数据库配置。} 记得改写各自项目下的数据库配置。
启动项目:
在services下,选中两个启动项,然后启动。
访问
两个项目的端口号分别是8080和8081,分别访问http://localhost:8081/user/2和http://localhost:8080/order/101验证项目构建成功。