你的业务是怎么演变为微服务的

以前的项目譬如新闻模块和商品模块是放到一个项目(譬如tp)里开发的。对么
1、现在 商品每天访问量100万,新闻每天访问只有200 。 那么再用以前的方式部署就不行了。
2、所以要把商品模块单独拿出来,分表部署到3台机器上做负载均衡

由于拆分出来了。 所以 新闻模块 如果要在新闻页面里 显示个最热商品列表 咋办?
1、传统做,直接require news.php就行了。现在不行了
2、难道新闻模块直接 select * from product ? 耦合度也太高、太挫了

所以商品模块 就要专门放出一个 API地址 譬如叫做、 /product/fuck
这就是最早的rest api

这时 新闻模块 只要用httpclient (或curl)。 去请求商品的这个API就行了 对吗?

由于 http api可能有点慢。 于是商品模块 提供了一个基于jsonrpc的 rpc接口。 就快了 对吗?

由于 http api可能有点慢。 于是商品模块 提供了一个基于jsonrpc的 rpc接口。 就快了 对吗?

这时 新闻模块 只要用httpclient (或curl)。 去请求商品的这个API就行了 对吗?

到以上为止。 还不能叫 微服务 。 只能算是 把服务分开来部署、分开来独立调用、用了 rpc技术 而已

真正的关键在于。(我举两个最简单的点)
1、新闻模块 怎么知道 商品模块的 API 地址在哪? 写死在程序里吗?
2、如果商品模块宕机了。 是不是新闻模块页面 也 卡死在哪?

自然而然的  你会想到一个事 “tmd服务分开了这么多。 老子需要管理这些服务。让这帮狗日的 能够稳定运行”

这就是服务治理。 你需要服务注册中心、消息总线、服务熔断降级、限流、网关等

从这里开始 你进入了 服务治理。 这才是真正的微服务的开端

一个微服务项目做得好不好 。不在于你用了多高大上的第三方

而在于如何 恰到好处(成本)的 进行服务治理

恰到好处在于  你怎么 控制成本 ,又能高性能的完成功能 。且可控

譬如刚创业,才几千用户。 你直接上k8s来治理了。那你一年就搞技术了 ,赚不到钱了

再譬如网关。 如果你只有2-3个服务,服务之间 也就一个反向代理(路由)。没有其他公共部分。 那么只要openresty(甚至nginx就行了)

如果有 譬如限流功能,需要和自己的业务权限相结合,公共部分又很多。怎么你就要用高级的网关,甚至自己定制化开发业务网关

公共部分越来越集中,各个产品线 都有统一管理需求。 此时,你就要考虑 把这些货色抽出来做中台了

穷->有点钱->有钱->拿到融资->洗钱 
不同阶段,使用的技术手段是不一样的

http api也属于rpc。 只不过 往往大家说的rpc都是tcp的。 而http 除了tcp还要走一层http

还有个重要原因    不是所有服务 都要对外 发布

有些服务功能 就是 给其他模块调用的 我打个比方

譬如 商品下单。流程是 订单入库->减库存->发送下单成功邮件->赠送用户积分

这里面 就只有 订单入库 是对外API(所谓对外,就是吃瓜群众需要 能够提交访问的)

其他几个功能 都是服务和服务之间暗通款曲。   所以没必要做成http api

原文地址:https://www.cnblogs.com/zzg521/p/11774316.html

时间: 2024-10-09 14:11:37

你的业务是怎么演变为微服务的的相关文章

微服务架构下业务单机QPS跑不上去应从哪些角度分析

这是做应用运维老生常谈的一个事儿,经常做,今天把他总结一下. 不管什么性质的业务,吞吐量的本质是木桶原理,能跑多大量取决于木桶最短的那个板,脑袋里是不是立刻可以出现木桶的那个模型,哈哈!!换句话说,当有能力提高短板的高度时,业务的吞吐量就会有所上升,但同样有个边际效应,经过多次的优化后,当再次提高短板的成本非常非常大,而付出后提高的量很低时,那就不要较劲了,直接加服务器吧. 言归正传,先解释一下单机QPS跑不上去的现象,具体表现就是高过一个点后错误率增加.时延增大,很显然遇到短板了,那么这个短板

跟着小程来学微服务--微服务思想

前言 一直对微服务非常感兴趣,因为公司的架构改造正好有机会能够接触微服务,买来一些书,请教了很多微服务大牛同时自己也做了很多总结,写成了80页ppt,算是我对微服务的一个认识吧,微服务本身不同的人有不同的理解,而我就从我自己的角度来谈谈微服务是什么. 目前市面上的不少书或者不少相关文章写的都是框架的使用,或者架构的介绍,其实对于刚入门不久的同学来说很容易造成微服务就是一堆框架和组件的堆砌,于是今天我将从理论和实践的角度来说说微服务. 现代互联网的方向是当企业发展到一定规模后,一定是大规模.云计算

微服务架构与实践-王磊

(原文地址:http://www.infoq.com/cn/articles/microservice-and-continuous-delivery) 摘选书中节选-微服务与持续交付 十年以前,软件在一年之内的交付次数屈指可数. 过去的十年间,交付的过程一直被不断地优化和改进.从早期的RUP模型.敏捷.XP.Scrum,再到近几年的精益创业.DevOps,都力求能更有效地降低交付过程所耗费的成本并提高效率,从而尽早实现软件的价值. 持续交付是一种软件开发策略,用于优化软件交付的流程,以尽快得到

从零开始学习微服务架构(二)

作为一名IT从业者,懈怠是一件奢侈的事情,因为在IT圈,原地踏步就等于退步. 上一篇中,我们已经笼统介绍了一下微服务,以及我在项目中是如何从传统单体模式向微服务演变的.本章我们深入探讨一下微服务的核心内容. 乱花渐欲迷人眼 当我刚刚开始接触微服务的时候,我听到了许多名次:"微服务"."SOA"."spring boot"."spring cloud"."docker".面对这么多名词,一脑袋蒙圈-现在我们来

spring-cloud 微服务

直接看这为大佬讲解的 https://www.cnblogs.com/jajian/p/9973555.html 微服务 什么微服务 微服务是一个系统架构层面的思想 什么系统架构 研发大型综合性的软件产品的方式方法(类似盖房子) 系统架构也就是框架思想,框架思想始于需求. 微服务框架思想的由来 微服务思想也是始于需求,当目前设计的软件研发框架无法满足开发需求的时候 就会思考如何改进和优化框架来满足需求 周边 2014 3 提出几个观点 - 一个系统是由多个微小的程序服务共同组成 - 不同服务运行

微服务全流程分析

转眼已经2020,距离微服务这个词落地已经过去好多年!(我记得2017年就听过这个词).然而今天我想想什么是微服务,其实并没有一个很好的定义.为什么这样说,按照微服务的定义: 微服务架构就是将一个庞大的业务系统按照业务模块拆分成若干个独立的子系统,每个子系统都是一个独立的应用,它是一种将应用构建成一系列按业务领域划分模块的,小的自治服务的软件架构方式,倡导将复杂的单体应用拆分成若干个功能单一.松偶合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发,及持续集成与交付活动. 根据这个定义,不难

微服务架构(Microservice Architecture)

之前一段时间,有听部门架构说起接下来公司要使用微服务架构来研发系统,当时没怎么在意,因为是第一次听说微服务这个名词(果然无知者无畏啊):正好赶上五一假, 我自告奋勇的,接了编写微服务架构培训文档这个任务(也许因为我是文科生,文笔稍微好点).五一假期三天,基本都是在看资料,梳理思路以及编写接下来的培训文档中度过. 下面,就说说我这几天的一些收获吧:先说说资料来源吧:有架构给我的一些资料,以及自己百度和论坛.社区找来的一些资料,权当做一个总结式的简介... 目录如下: 一.微服务架构介绍 二.出现和

微服务,真的适合你么?

1.什么是微服务? 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务.微服务架构模式(Microservices Architecture Pattern)的目的是将大型的.复杂的.长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易做局部修改.微服务架构带来可独立部署.高扩展与伸缩.自由选择开发语言.高效利用资源.故障隔离等优点,同时也因为服务多带来分布式事务

微服务的一些实践

? 标准化运行环境 ,如无特殊情况 ,线上业务的虚拟机 KVM或docker配置一样 ? 标准化运行容器如Tomcat ? 标准化环境标识 ,如每台机器固定路径的appenv文件 ,env=production ,文件内容标识机器属于什么环境如线上环境.测试环境 ? 标准化应用名称规范 ,每个应用有一个唯一的名称 ,如war包下放置一个app.properties ,app.name=xxx-xxx-service ? 统一的开发语言 ? 标准化发布工具 ,如可以实现统一war包发布.jar包版