- 微服务
微服务架构是一种架构模式或者风格,它将单一的应用程序拆分为一组小服务,各个服务之间相互独立,每个服务专注于自己的功能,服务之间互相调用、互相配合,服务之间通常采用RestFul API方式进行通讯。特点就是麻雀虽小五脏俱全。
- 微服务的优缺点
优点
- 每个微服务可以被不用团队单独开发,开发效率高
- 服务专注于单个功能,代码清晰更容易理解
- 方便服务拓展
缺点
- 运维难度加大
- 服务之间通信、以及数据一致性问题
SpringCloud和Dubbo区别
- SpringCloud和Dubbo都是主流的微服务框架,不过SpringCloud使用的公司越来越多了。
- SpringCloud是Spring旗下的微服务解决方案,Dubbo是阿里旗下的分布式服务治理框架。
- Dubbo的服务调用使用的是RPC远程调用,SpringCloud是Rest API ,更符合微服务的定义。
- Dubbo的服务注册中心是Zookeeper,SpringCloud的注册中心是Eureka,不推荐使用其它的工具。
- Dubbo没有实现服务网关,只能通过第三方技术整合,SpirngCloud有Zuul路由网关,进行消费者请求的分发。
- SpringCloud还支持服务降级、服务熔断,与git集成进行分布式配置
dubbo由于采用二进制传输,而cloud是http协议传输,所以dubbo的传输效率更高。
dubbo是强依赖,而cloud是一种规范,所以cloud需要做好管理来规范接口的升级
dubbo开发麻烦一点,无论是jar版本的引用还是组件的使用
- Rest和RPC
RPC的缺点就是服务提供方和调用方之间的强依赖,而REST的服务方与提供方不存在代码上的耦合,而是一个接口规范,比RPC更灵活。
- Eureka和Zookeeper区别
- Zookeeper保证的是CP,而Eureka保证的是AP。 Zookeeper在选举期间注册服务瘫痪,选举期间服务不可用,Eureka的节点之间是平等关系,只要有一台Eureka存活,服务就可用,不过数据缺不一定是最新的。
- Zookeeper有领导者、跟随者关系,而Eureka各个节点平等
- ZookeePer是过半存活,Eureka有分区机制。
- Eureka原理
Eureka包含两个组件Eureka Server 和Eureka Client
Eureka Server提供了服务注册、心跳服务、服务剔除、服务下线、集群同步等功能。它会在节点启动后,去其它节点拉取注册信息保存到本地,然后将信息注册给自己。当有客户端进行注册的时候,它会将服务进行注册,然后同步给其它节点。同时它会提供心跳服务检测服务是否存活,如果服务没有主动下线,并且没有进行心跳签约,那么在关闭保护模式的情况下会将该服务剔除。
Eureka Client会读取与 Eureka Server交互的配置信息,封装成 EurekaClientConfig,读取自身服务实例配置信息,封装成EurekalnstanceConfig,从Eureka server拉取注册表信息并缓存到本地,它会提交信息到Server进行服务注册,同时它会开启心跳服务,以维持服务的存活状态。
- 自我保护模式
EurekaServer在一段是内没有收到某个微服务实例的心跳,当开启自我保护模式之后,EurekaServer会保护服务注册表中的细腻,不会注销该服务,当微服务恢复正常后,就会推出保护模式。它宁可保留错误的服务,也不误删健康的服务。