首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊一聊微服务

聊一聊微服务

在这篇文章中,我们将介绍微服务,那就需要回答一个司空见惯的问题“什么是微服务?”

1

什么是微服务?

微服务是一种软件开发技术,它将应用程序构建为松散耦合服务的集合。 在微服务架构中,服务是细粒度的,协议是轻量级的。 微服务是一种架构风格,是将一个复杂的系统分解成多个更小粒度的服务单元。

“微服务 - 也称为微服务架构 - 是一种架构风格,它将应用程序构建为一组松散耦合的服务,实现业务功能。 微服务架构支持大型复杂应用程序的持续交付/部署。它还使组织能够发展其技术堆栈。“

-- Chris Richardson, Microservices.io

这是比较权威的微服务解释与定义。换句话说,微服务架构由小型和自治服务组成。 每个服务都是独立且可独立部署的,这意味着将大型应用程序分解为松散耦合的模块。

2

为何选择微服务?

以下是基于微服务架构设计应用程序的一些优点:

技术异构性 - 不同的服务可以用几种技术(即Java,Node.js,Ruby,.Net等)实现,并与每种技术进行通信。

故障隔离 - 与单体架构式应用相比,微服务中更容易隔离故障。 例如内存泄漏,数据库复制的问题等。

扩展 - 应用程序的利用率每天都在迅速增加,同时导致性能下降并导致应用程序扩展。 它可以是水平扩展或垂直扩展。

易于部署 - 如果负载很高,部署单片应用程序需要花费更多时间,有时需要花费数小时才能部署并随时可用,但微服务是由小型,高度分离的服务组成,专注于执行小任务,为促进模块化系统建设提供了方法。

优化可替换性 - 服务可以使用自己的架构或技术运行,与单个业务功能保持一致,因此它们只执行一项功能。为了更改或替换或弃用服务,可以优化并且不会花费太多时间来开发内部或各种技术的服务,并且不会影响其他服务。

云支持 - 云改变了IT支持业务的方式。 一个结构良好的云平台可以从混合的私有/公共云生态系统中获取服务。 通过基于微服务的方法来促进组织的流程需求,尝试解决问题变得更加容易。

3

微服务面临的挑战

微服务比传统系统更复杂。 反过来,环境变得更加复杂,因为服务必须管理,保护,监控和支持。

流程改进 - 为了利用微服务的交付速度,组织应采用敏捷开发流程,持续集成,自动化QA检查,自动化交付渠道。

增加了微服务需要多次部署以及更多失败场景的概率。

多点部署意味着需要资源,硬件和工程资源稀缺且昂贵。 当有数百或数千个微服务时,团队如何确定优先级?

迁移 - 将单体应用迁移到微服务体系结构需要确定微服务的正确边界,并且此过程很复杂。

使用微服务架构方式,需要提出了几个问题:

如何评估是否应该允许将代码拆分迁移到不同的服务?

如何监控整体系统健康状况并尽早发现潜在的问题?

版本如何控制?

如何分析分布式应用程序中的大量日志数据?

如何监控微服务的性能?

4

微服务架构

以下是微服务的相对高层次的抽象概述:

5

微服务通信

微服务之间的通信可以设置为同步或异步方式。 通常,微服务使用广泛采用的轻量级协议(如HTTP和REST)或消息传递协议(如JMS或AMQP)相互通信。 在特定情况下,可以选择更优化的通信协议,例如Thrift,gRpc或Dubbo等。

仅用一种方法开发系统是不合理的。根据具体场景需求需要两种方式组合使用。原则上,异步方法非常适合微服务,但是,尝试将所有内容建模为异步会导致复杂的系统设计。

6

微服务基础设施

为了实现微服务可伸缩性和可用性,可以将一个微服务部署在一个或多个虚拟机(VM)或物理机中。 如果服务简单且流量较小,则可以在一个VM上部署多个微服务。

对于云服务架构,开发人员无需担心服务的运行位置。服务将部署在云服务器中,基础架构可自行管理部署。如果发起包含数百个微服务,云服务架构是最佳选择。

总结

在这篇文章中,我们对微服务有了基本的了解。 我们了解构建微服务的微服务和核心原则是什么。 我们在使用这些服务时涵盖了架构以及面临的挑战。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181213G01F5T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券