我自己的定义:
微服务是一个独立的、解耦的组件,它处理单个业务问题,并且可以从其他服务中使用。
其他人可能同意或不同意,关于这个话题有很多有趣的讨论,这使它成为软件工程师的一个很好的研究点。
从技术角度来看:
您可以使用几乎任何技术创建微服务:Java EE、Java + Spring、Python、Rails、Grails、Node.js 等等。据我所见,它似乎最常应用于 Web 应用程序和后端面向服务的生态系统领域。在你参考的文章中,NetFlix 模型是一个非常有趣的研究,因为你可以深入地看到一个微服务架构的所有元素:服务发现、熔断、监控、动态配置等等。
如果您是面向 Java 的,您可能需要检查一些内容:
Spring Cloud 允许您以最少的手动编码使用其中一些相同的 NetFlix 组件:http: //cloud.spring.io/spring-cloud-netflix/
github上的一个实际操作示例(不是我的,但我在自己学习该主题时使用过):https ://github.com/ewolff/microservice
从概念的角度来看,您的问题暗示了一个臭名昭著的微服务设计困境。微服务不一定有“正确”的粒度级别。这个想法是选择在您的业务领域内有意义的粒度级别。如果您以非常低的粒度级别(例如 CRUD 级别)实现微服务,那么您几乎可以肯定最终会得到非常繁琐的服务,并且您可能必须在上面构建更有意义的复合服务。如果您选择太高的粒度级别,您最终可能会得到一个更加单一的应用程序,这可能需要稍后重构为微服务大小的部分。