深入理解微服务:特性、优势与对比分析
1. 微服务的定义与特性
1.1 定义
微服务是小型的、自主的服务,它们协同工作。下面详细分析其特性。
1.2 特性
1.2.1 小型且专注
随着代码的编写和新功能的添加,代码库会不断增长。在大型的单体代码库中,很难确定更改代码的位置,即使努力构建清晰、模块化的单体代码库,进程内的边界也容易崩溃,相关功能的代码会分散在各处,增加了修复错误和实现功能的难度。
微服务通过将服务边界聚焦于业务边界,使特定功能的代码位置清晰。关于微服务的“小”并没有明确的代码行数标准,因为不同语言的表达能力不同,且可能引入多个依赖。澳大利亚 RealEstate.com.au 的 Jon Eaves 认为,一个微服务应该能在两周内重写。当代码不再让人感觉过大时,它可能就足够小了。
服务的大小还与团队结构的契合度有关。如果代码库太大,小团队难以管理,那么拆分它是明智的选择。一般来说,服务越小,微服务架构的优缺点就越明显。随着服务变小,相互依赖的好处会增加,但也会带来更多的复杂性。
1.2.2 自主性
微服务是独立的实体,可以作为隔离的服务部署在平台即服务(PAAS)上,也可以是独立的操作系统进程。我们应尽量避免在同一台机器上部署多个服务,尽管如今“机器”的定义比较模糊。这种隔离虽然会增加一些开销,但能使分布式系统更易于理解,新的技术也能缓解相关部署挑战。
服务之间通过网络调用进行通信,以确保服务之间的分离,避免紧密耦合。这些服务需要能够独立更改和部署,而不影响消费者。我们需要考虑服务应暴露和隐藏的内容,过多的共享会