微服务是一个新的应用平台,微服务的独特之处就是可以独立部署和管理,一旦实现应用,它们与底层的操作系统交互就会很少了,因此,小编建议在我们学习的时候一定给重视一下微服务,了解并参透才好,这套微服务相关的面试题希望可以帮助到大家在职业的道路上减轻你的负担:
Q1. 说说微服务架构的优势。
优势
|
说明
|
独立开发
|
所有微服务都可以根据各自的功能轻松开发
|
独立部署
|
根据他们所提供的服务,可以在任何应用中单独部署
|
故障隔离
|
即使应用中的一个服务不起作用,系统仍然继续运行
|
混合技术栈
|
可以用不同的语言和技术来构建同一应用程序的不同服务
|
粒度缩放
|
各个组件可根据需要进行扩展,无需将所有组件融合到一起
|
Q2. 你对微服务是怎么理解的?
- 微服务,又名微服务架构,是一种架构风格,它将应用构建为一个小型自治服务的集合,以业务领域为模型。
- 通俗地说,就像蜜蜂通过对蜡制的等边六角形单元来构建它们的蜂巢。
- 他们最初从使用各种材料的小单元开始,一点点的搭建出一个大型蜂巢。
- 这些小单元组成坚固的结构,将蜂窝的特定部分固定在一起。
- 这里,每个小单元都独立于另一个,但它也与其他小单元相关。
- 这意味着对一个小单元的损害不会损害其他的单元,因此,蜜蜂可以在不影响完整蜂巢的情况下重建这些单元。
Q3. 微服务有哪些特点?
- 解耦(Decoupling) - 系统内的服务很大程度上是分离的。因此整个应用可以被轻松构建、修改和扩展
- 组件化(Componentization) - 微服务被视为可以被轻松替换和升级的独立组件
- 业务能力(Business Capabilities) - 微服务非常简单,专注于单一功能
- 自治(Autonomy) - 开发人员和团队可以相互独立工作,从而提高效率
- 持续交付(ContinousDelivery) - 允许频繁发版,通过系统自动化完成对软件的创建、测试和审核,
- 责任(Responsibility) - 微服务不把程序作为项目去关注。相反,他们将程序视为自己负责的产品
- 分散治理(Decentralized Governance) - 重点是用正确的工具去做正确的事。这意味着没有任何标准化模式或着技术模式。开发人员可以自由选择最合适的工具来解决自己的问题
- 敏捷性(Agility) - 微服务支持敏捷开发。任何新功能都可以快速开发并被再次丢弃
Q4. 设计微服务的最佳实践是什么?
以下是设计微服务的最佳实践:
- 为每个微服务分开数据存储
- 将代码保持在类似的成熟度等级上
- 为每个微服务进行单独的构建
- 部署到容器中
- 将服务器视为无状态的
Q5. 微服务架构是如何运作的?
微服务架构具有以下组件:
- Clients – 来自不同设备的不同用户发送请求。
- Identity Providers – 对用户或客户端身份进行身份验证,并颁发安全令牌。
- API Gateway – 处理客户端请求。
- Static Content – 容纳系统的所有内容。
- Management – 平衡节点上的服务压力并识别故障。
- Service Discovery – 用于找到微服务之间通信路径的向导。
- Content Delivery Networks – 代理服务器及其数据中心的分布式网络。
- Remote Service – 启用驻留在 IT 设备网络上的远程访问信息。
Q6. 在使用微服务架构时,你面临的挑战是什么?
开发较小的微服务听起来很容易,但在开发时会经常遇到一些挑战。
- 自动化组件:难以自动化,因为有许多较小的组件。对于每个组件,都必须采取构建、发布和监控的步骤。
- 可感知性:将大量组件维持在一起会带来难以部署、维护、监控和识别的问题。它需要在所有组件周围具有很好的感知能力。
- 配置管理:有时在各种环境中维护组件的配置会很困难。
- 调试:很难找到与产生的错误相关的每一项服务。维护一个集中式的日志和控制面板对调试问题至关重要。
以上就是“六个需要熟知的微服务面试题”,你能回答上来吗?如果想要了解更多的相关内容,可以关注极悦Java官网。