微服务概述之微服务实践参考

这篇具有很好参考价值的文章主要介绍了微服务概述之微服务实践参考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

了解了微服务的好处,那么如何在实际生产中进行微服务的拆分?微服务中的微到底如何界定?服务拆分后如何进行协作?下面从开发工程师的角度来和大家聊一聊在实际开发中如何进行微服务的实践。

1. 服务如何拆分

微服务的拆分标准没有一个特别明确的概念,记住一条原则即可,就是不管服务如何拆分,都要明确定义好微服务系统的边界。举个例子,在电商系统中,可以有订单服务、用户服务、支付服务。订单服务还可细分为订单列表服务、订单详情服务等。这些微服务的系统边界需要开发团队自己来决定。
这样做的好处是,将一个大的业务拆分成了若干个小的业务,每个业务就是一个服务,将复杂业务简单化,编码也会相应的简单,代码的可读性和可扩展性都会增强。如果团队加入新人的话,也能减少学习成本。

2. 服务间的通信

服务拆分好之后,完成了开发就可以部署到独立的服务器上了。而服务之间是需要通信的,一般倾向于使用 HTTP 协议通信,大部分采用 RESTful 风格,这种通信机制与平台和语言无关,因此可以调用跨语言的微服务。例如,可以调用 Go语言编写的微服务,也可以调用 Java 语言编写的微服务。
服务之间还可以通过消息中间件进行通信。例如,服务A 将消息发送到消息中间件,服务 B通过订阅消息中间件进行后续的业务处理。
由于这种无状态的通信方式使得服务与服务之间没有任何的耦合,所以随着业务的发展,可以将服务更进一步细分,只要增加服务之间的调用接口即可。如果并发量继续增加,还可以像前面一样,将微服务做成集群,从而提高系统的负载能力。

3. 每个服务的数据库分别独立

在单体应用中,由于只有一个服务,所以业务共用一个数据库就行。而随着业务量的增加,数据库的表越来越多,就越来越难以管理和维护,数据库的性能也越来越慢。如果按照业务来拆分,这样数据库也就对应的独立了。每个微服务都有自己对应的数据库,这相当于将原来一个数据库的压力分散到多个数据库上。每个数据库的关系也会变得简单,开发也简单,数据库的性能也会有所提高。

总结

在微服务中,服务的拆分是一个重要的步骤。尽管没有明确的拆分标准,但需要明确定义好每个微服务系统的边界。将一个大的业务拆分成若干个小的业务,可以简化复杂业务,提高代码的可读性和可扩展性。在微服务架构中,服务之间需要进行通信。常见的通信方式是使用HTTP协议进行RESTful风格的通信,也可以通过消息中间件实现。这种无状态的通信方式使得服务与服务之间没有耦合,可以方便地进行拆分和扩展。每个微服务应该有独立的数据库,这样可以降低数据库的负载压力,简化数据库关系,提高性能。

微服务可以提高开发效率,降低学习成本,并且更好地适应业务的发展和变化。

大厂面试

面试官:你在公司中做微服务项目时,是依据什么来进行服务划分的?微服务设计一般都遵循了什么原则?
面试者:在进行微服务设计时,服务的数量相对于单体应用来说会比较多。考虑的重点就是如何准确识别系统的隔离点,也就是系统的边界。只有每个服务的边界确定了,才能在以后的开发中做到更好地协作。识别系统的隔离点,需要遵守下面几个原则。

  1. 单一职责原则。让每个服务能独立、有界限地工作,每个服务只关注自己的业务,做到高内聚,服务和服务之间做到低耦合。
  2. 服务自治原则。每个服务要能做到独立开发、独立测试、独立构建、独立部署、独立运行,与其他服务进行解耦。
  3. 轻量级通信原则。让每个服务之间的调用是轻量级的,并且能够跨平台、跨语言调用。如采用 RESTful风格、利用消息队列进行通信等。
  4. 粒度进化原则。对每一个服务的粒度把控,其实没有统一的标准,这个需要根据具体业务问题去确定。不要过度设计,服务的粒度随着业务和用户的发展而发展。

总结一句话。软件是为业务服务的,好的系统不是设计出来的,而是进化出来的。文章来源地址https://www.toymoban.com/news/detail-804028.html

到了这里,关于微服务概述之微服务实践参考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [golang gin框架] 40.Gin商城项目-微服务实战之Captcha验证码微服务

    本次内容需要 gin框架基础知识, golang微服务基础知识才能更好理解 在前面,讲解了微服务的架构等,这里,来讲解前面商城项目的 Captcha验证码 微服务 ,captcha验证码功能在前台,后端 都要用到 ,可以把它 抽离出来 ,做成微服务功能 编辑 这个验证码功能封装代码captcha.go如下: 把这个

    2024年02月16日
    浏览(28)
  • 云计算:从基础架构原理到最佳实践之:云计算概述与发展历程

    作者:禅与计算机程序设计艺术 随着信息技术的不断发展,在国际化进程中,越来越多的人们开始把注意力转移到了云计算这个新兴领域,而这一热门技术也带动了一些新的变化。由于云计算的快速发展和普及,使得许多IT企业和开发者都开始关注其背后的技术细节。因此,

    2024年02月08日
    浏览(44)
  • [golang gin框架] 42.Gin商城项目-微服务实战之后台Rbac微服务角色增删改查微服务

    上一节讲解了后台Rbac微服务用户登录功能以及Gorm数据库配置单独抽离,Consul配置单独抽离,这一节讲解 后台Rbac微服务 角色 增删改查微服务 功能,Rbac微服务角色增删改查微服务和 后 台Rbac用户登录微服务 是属于 同一个Rbac微服务 的 不同子微服务功能 ,为了区分不同子微

    2024年02月15日
    浏览(31)
  • [golang gin框架] 45.Gin商城项目-微服务实战之后台Rbac微服务之角色权限关联

    角色和权限的关联关系在前面文章中有讲解,见[golang gin框架] 14.Gin 商城项目-RBAC管理之角色和权限关联,角色授权,在这里通过微服务来实现 角色对权限的授权 操作,这里要实现的有两个功能,一个是进入授权,另一个是,授权提交操作,页面如下:  这里需要在proto/rbacRole.proto中增加

    2024年02月14日
    浏览(41)
  • 深入浅出 -- 系统架构之微服务架构选型参考图

    技术选型架构图 是一个用于展示项目中所采用的各种技术和组件之间关系的图表。 它通常包括以下几个部分: 1. 项目名称和描述:简要介绍项目的背景和目标。 2. 技术栈:列出项目中使用的主要技术和工具,如编程语言、框架、数据库等。 3. 组件关系:用箭头表示各个组

    2024年04月09日
    浏览(36)
  • [golang gin框架] 44.Gin商城项目-微服务实战之后台Rbac微服务之权限的增删改查微服务

    上一节讲解了[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联,这里讲解权限管理Rbac微服务权限的增删改查微服务 要实现权限的增删改查,就需要创建对应的模型,故在server/rbac/models下创建Access.go模型文件,参考[golang gin框架]

    2024年02月14日
    浏览(30)
  • 微服务概述之微服务架构

    为了解决单体应用的缺点,工程师们想到将原来大的单体应用进行拆分,化整为零形成独立的应用,不过此时这些应用没有直观的入口,因此用传统应用的概念来定义就不太妥当。于是诞生了“服务”,通过服务来描述这种功能性的应用,并其他应用提供功能支持,服务于其

    2024年01月22日
    浏览(34)
  • 微服务概述之单体架构

    互联网始于 1969年美国的阿帕网(ARPA),最开始的阿帕网只在美国军方使用。随着时间的推移,一些大学也开始加入建设,慢慢演化成了现在的因特网 (Internet)。随着计算机网络的普及,到现在全世界几乎一半的人口,都在使用互联网产品。日常生活中的各种场景,如商场

    2024年01月22日
    浏览(35)
  • 0201概述-网关Gateway-微服务架构

    Spring Cloud Gateway是一个基于Spring Framework 5、Spring Boot 2和Project Reactor等技术开发的API网关,它提供了一系列的过滤器(Filter)来处理HTTP请求和响应,可以轻松地实现路由、负载均衡、限流、重试、熔断、安全控制等功能,可以作为微服务架构中的入口和边缘服务。 Spring Cloud

    2024年02月04日
    浏览(48)
  • SpringCloud微服务实战——搭建企业级开发框架:微服务安全加固—自定义Gateway拦截器实现防止SQL注入/XSS攻击

     SQL注入是常见的系统安全问题之一,用户通过特定方式向系统发送SQL脚本,可直接自定义操作系统数据库,如果系统没有对SQL注入进行拦截,那么用户甚至可以直接对数据库进行增删改查等操作。   XSS全称为Cross Site Script跨站点脚本攻击,和SQL注入类似,都是通过特定方

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包