作者回复: 如果你了解这三者的诞生背景和演进历史,你会发现它们三者实际是为解决同一问题(分布式微服务基础框架/平台)而生,三者都是对同一问题的解,只是解法和层次不同,但殊途同归。k8s是后起之秀,有后发优势,站得高度更高,考虑更系统全面,简单理解k8s = doubbo or sc + container based deployment。
作者回复: 你好,虽然微服务应用场景主要针对企业级互联网应用,但是微服务架构的思想其实是通用的,IoT应用可以是微服务应用的一种特殊场景,只是它的端设备资源可能比较受限,所用操作系统可能也不同于一般的操作系统,但是服务端架构可以和企业应用没有多大区别。我想理解企业微服务架构的话,可以扩展架构视野,对你做IoT架构应该会有帮助,只是需要针对性做一些调整,尤其考虑资源和性能方面。我看到github上有个叫lelylan(https://github.com/lelylan/lelylan/)的IoT框架,采用微服务架构,它是ruby/nodejs可开发,不过其思想完全可以用其它语言实现。当然,取决你的具体场景和规模,IoT项目也可以不用微服务架构。
作者回复: 1. 服务框架一旦用起来,想要替换成另外一套,总是有不小的成本的,而且迁移很折腾。况且换成另外一套不见得带来什么业务价值。建议内部服务间调用沿用Dubbo,前端对外暴露的聚合服务(也称BFF),可以考虑采用SpringBoot Rest。这样两者可以结合用起来。 2. 任务调度可选徐雪里的xxl-job(https://github.com/xuxueli/xxl-job),这个比较轻量,比较重量的有唯品会Saturn(https://github.com/vipshop/Saturn),还有当当的elastic-job(https://github.com/elasticjob)。你可以评估下是否符合你的需求。另外容器平台k8s/mesos等都支持后台任务和周期任务等的运行,也可以考虑。
作者回复: Eureka的替代组件,一个是consul(https://github.com/hashicorp/consul),还有一个阿里开源的nacos(https://github.com/alibaba/nacos)。 Hystrix的替代目前有(resilience4j)https://github.com/resilience4j/resilience4j。 如果采用K8s平台开发微服务,内置支持服务发现和LB,不需要Eureka/Ribbon这些。
作者回复: zuul1成熟稳定,已经经过大规模落地验证,实现和使用简单,本质就是一个servlet,虽然同步性能不是很高,但是可以通过多部署实例来解决,另外可以配合hystrix提升稳定性。zuul2异步模型,实现比较复杂,除了netflix,其它企业采用的案例还不多。具体要看企业的流量和技术团队情况,一般企业我觉得zuul1就够了。spring cloud gateway出来时间不长,大规模企业落地案例还不多,而且是全新产品,需要不断迭代才能完善稳定。
作者回复: 谢谢提醒!
作者回复: 1. hystrix确实是一个通用的容错限流组件,理论上可以集成dubbo。我刚在百度上搜了一下,dubbo集成hystrix,有不少解决方案。具体还是需要实际测试,因为可能有线程和网路模型等细节问题。 2. Skywalking应该也是具体框架无关的。 我上面的比对,单纯是从这三个框架自身作为一个体系出发,是否考虑了这个关注点,和原生提供怎样的解决方案,是否开源,来进行比对的。 3. CAT和Apollo之前课程重点介绍过,本课程不重复了。本课程以应用为主,拓展介绍下Skywalking(可替代CAT),同时应用部署到K8s,它原生支持ConfigMaps/Secrets(可替代Apollo)。
作者回复: 可以,zuul可以SpringBoot方式启动(加一个@EnableZuulProxy标注即可)
作者回复: 你好,课程第3章讲解在SpringBoot基础上做轻量级封装,搭建微服务基础框架,第4章讲解开发一个轻量级的微服务网关,第5章讲解基于jwt的微服务安全认证架构,这几章都会结合staffjoy案例项目的代码讲解,有兴趣也可以直接看staffjoy项目源码:https://github.com/spring2go/staffjoy,看源码过程中如果有问题,可以再回头看课程讲解,这样更容易理解项目源码。
作者回复: Zipkin只是一个单纯的调用链监控产品,性能聚合报表能力比较欠缺,企业如果要用的话,一般需要定制扩展。Skywalking和CAT不光是调用链监控,而且是APM,有比较丰富的性能统计报表,更适合企业开箱即用。