好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php微服务架构 php微服务架构有哪些

很多站长朋友们都不太清楚php微服务架构,今天小编就来给大家整理php微服务架构,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 微服务架构实践 - 你只懂docker与spring boot就够了吗? 2、 微服务架构图 3、 软件的系统架构和开发平台都有哪些?具体都有哪几种呢? 4、 谈谈微服务架构是一个怎样的存在? 5、 php为什么不适合做微服务 微服务架构实践 - 你只懂docker与spring boot就够了吗?

背景

随着公司一年多的成长,我们已经开发了数十个项目了,后台有JAVA的有PHP的,为了更好地提升开发与管理效率,各技术大牛小牛们时常进行激烈的PK,碰撞出了许许多多爱的火花,比如其中之一:微服务实践

设计

只需要有一套BASE微服务,BASE微服务生成业务系统微服务实例,供各个业务系统调用;业务系统不直接调用BASE,只能调用微服务INSTANCE。

这是运维的问题,让运维去解决,运维使用工具,实际也不算困难,反正执行的都是脚本,不需要手工操作。

单点故障影响全局,我们选择了稳定更重要;另外saas的话,为了应对不同行业,会存在过度设计的嫌疑;私有化更容易。

调用逻辑

设计理念

非模块化,谈不上微服务,比如我们上面的用户微服务、产品微服务、地址微服务等,都需要先模块化,为了更好地落实开发,你可能不得不,边模块化边微服务,模块化的时候要注意,不能有关联查询,包要完全独立,到时候微服务才能拆开。

松耦合表示我们模块之间不直接依赖,无状态,可以单独地为外界提供服务;

强内聚是指,我们虽然要拆分成一个个小的微服务,但是也要考虑某些功能的强关联性,比如一个凳子是由四个脚与一个板组成,我们不能把四个脚与板分开售卖,就没有意义了。

开发

spring-boot :较springmvc更加简约了,springmvc有一大零的配置文件,比如spring-servlet、spring-mybatis、spring.xml与web.xml,这些在spring-boot都不需要了,只需要强大的注解功能即可,boot更合适微服务。

spring-cloud :里面有比较多组件,用于支持微服务,比如spring cloud config统一配置中心,用于多环境的配置文件配置,大家再也不用为多个微服务的开发、测试与生产环境的配置文件管理而发愁了;spring cloud eureka用于服务注册与发现,下面有单独介绍;其它的组件大家可以去官网看看,这里不一一介绍,总之如果JAVA平台,尽量使用spring体系的内容。

我们采用mysql,因为我们是应用多,但数据量单表并不算大,多则不超过百万,mongodb也实验过,开发非常快,也非常灵活,但因为不是关系型数据库,维护成本较高。

RESTFUL :URL的资源与操作解耦,让URL更加符合语义,上百个接口也非常好管理,网上有很多文章讲得非常透彻,这玩意不是特别好理解,要多领悟,在项目中实践,就有矛塞盾开的感觉,这里不做详细介绍。

接口文档swagger :比起传统全手工写接口文档,swagger有统一的输出格式,不管是几个人写的;swagger采用写代码的方式来写接口文档,以前修改了代码,还必须打开wiki手工修改接口文档,现在只需要修改一下代码即可,程序员更愿意修改了,成本更低了,前端与其它调用者不会天天吼着,你这接口咋又变了,新加的字段是啥意思呀。

RocketMQ:一直纠结kafka与rocketMQ,最终选择了RocketMQ

为了性能上面的考虑,尽量使用异步编程,比如注册送优惠券,那么注册成功就可以给用户返回注册成功了,但是送优惠券可以是异步调用的,不阻塞注册的线程。

微服务框架下,日志不可能还分散在各个服务节点上,必须有统一的日志中心。ELK是一个实时日志分析平台,就是将各个服务的日志汇总于日志中心,然后可以按照系统、节点等进行搜索,除上述搜索条件外,我们还在各个微服务实现了按照业务id(一次请求生成一个业务id)与用户id搜索日志,方便跟踪与定位问题。

当然可能有更加轻量级与好用的disconf或spring cloud config,但是我们有php开发的应用,以上二者都不支持。如果全是JAVA应用,采用disconf还是非常不错的。

测试

每个程序员都有这样的经历,刚上线,客户又反馈了bug,原来是我们修改某个功能代码的时候,导致了其它功能的bug,每次上线心里都没底;这就体现了接口测试的必须性,尤其是每次版本升级的时候,都需要执行一遍,以防修改某个接口导致其它接口报错,比手动测试靠谱许多。

部署

docker已经家喻户晓了,这是继虚拟机以后,又一重大变革,将所有的单个微服务都放在docker中,这样你何时何地想部署,直接丢过去就OK了,快到爆。

用几句简单的命令就搞定了负载均衡,而且还可以平滑升级,版本升级的时候,大家就不用告诉客户:系统通知,某日某晚00:00-08:00我行处于系统升级维护中,大家不要去取钱哦,因为你可能取不出来,呵呵。

升级

我们采用工具flyway,可以对数据库脚本进行版本控制。

传统的版本升级,

1.开发推代码并同时记录自己提交了哪些文件;

2.项目经理根据svn审核文件,并打包成war包;

3.投到测试环境让测试公司测试;

4.中途修改了文件,可能需要重新打包;

….

我都写不下去了,项目经理像个超人似的。

现在用持续集成(CI)非常简单,我们用的工具是Jenkins,推完代码,点几下按钮就完成了上线,不管是测试环境,还是生产环境都非常简单,不然项目经理核对文件眼睛都绿了。

结尾

本文主要是介绍微服务开发上的选型,对于细则不做深究,大家感兴趣可以了解下各个组件。当然,我们的选型未免正确,不同场景应用可能完全不同,本文仅供参考。

微服务架构图

项目微服务架构图

微服务架构根据目前产品存在的问题,针对快速开发、海量用户、大量数据、低延迟等互联网应用的实际需要,通过对业务架构、系统架构、基础架构、技术架构进行设计,彻底解决系统解耦、性能低下等问题,而且支持云计算部署,可以满足高并发、高可用、高稳定。微服务并没有一个官方的定义,可以理解为一种架构风格 。

大数据管理数据处理过程图

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察力。大数据处理的主要流程包括数据收集、数据存储、数据处理、数据应用等主要环节。随着业务的增长,大量和流程、规则相关的非结构化数据也爆发式增长。大数据处理,大...

产品开发流程图

产品开发流程(Product Development Process)产品开发流程是指企业用于想像、设计和商业化一种产品的步骤或活动的序列。产品开发流程涉及的人员从产品经理到设计师、前端、后端等等一系列人员,这篇文章主要关于产品开发的完整流程,希望对各个工作岗位上的人有借鉴意义。很多产品经理不...

阿里巴巴数据中台全景图

阿里是数据中台概念的首先提出者,其案例更具分析意义。从阿里巴巴数据中台全景图可以看出,阿里的数据中台包括了计算与存储平台、数据资产管理、智能数据研发、统一数据中心中间件(OneService)四大模块,最上层支撑着阿里数据、数据大屏、生意参谋等大数据应用。阿里数据中台架构。数据中台建设理论、方...

Web开发技术架构图

大型web系统架构动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册。1、学习Web开发原理,包括MVC/MTV等Web框架; 2、学习Django Web框架,从技术原理到项目实践; 3、学习Djan...

互联网工作原理拓扑图

互联网工作原理拓扑图模板,计算机网络是由很多台计算机组成的, 要实现网络之间传输数据, 必须要做两件事, 数据传输目的地址和保证数据迅速可靠传输的措施。计算机网络是由许多计算机组成的,要实现网络的计算机之间传输数据,必须要作两件事,数据传输目的地址和保证数据迅速可靠传输的措施。拓扑图用于计算机...

管理业务流程图

业务管理是网路管理中比较重要的部分,涉及的面也比较广泛。在这一管理层,大多数的管理信息直接在GSM系统的各网路单元与GSM网路管理设施之间交换。这些管理信息还包括由AuC管理的安全性数据,由HLR管理的客户数据,由MSC管理的费率和计费数据等。业务管理(Business Management)...

电商知识图谱

知识图谱(Knowledge Graph/Vault,以下简称KG)本质上是语义网络,是一种基于图的数据结构,由节点(Point)和边(Edge)组成。电商就是电子商务的简称,在互联网上销售产品而进行的商业活动,是把现实生活中的商业活动,搬到虚拟的世界当中电商这一特殊领域的知识图谱构建过程中,...

 

树状网络拓扑图

树型拓扑(tree topology):一种类似于总线拓扑的局域网拓扑。树型网络可以包含分支,每个分支又可包含多个结点。树状拓扑结构是一种分级结构。在树状结构的网络中,任意两个节点之间不产生回路,每条通路都支持双向传输、这种结构的特点是扩充方便、灵活,成本低,易推广,适合于分主次或分等级的层级...

云平台整体架构图

云计算的体系结构由5部分组成,分别为应用层,平台层,资源层,用户访问层和管理层,云计算的本质是通过网络提供服务,所以其体系结构以服务为核心。公认的云架构是划分为基础设施层、平台层和软件服务层三个层次的,对应名称为IaaS,PaaS和SaaS。

软件的系统架构和开发平台都有哪些?具体都有哪几种呢?

一、软件的系统架构

(一)、分层架构

分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。

这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。

虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

表现层(presentation):用户界面,负责视觉和用户互动

业务层(business):实现业务逻辑

持久层(persistence):提供数据,SQL 语句就放在这一层

数据库(database) :保存数据

有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。

用户的请求将依次通过这四层的处理,不能跳过其中任何一层。

(二)事件驱动架构

事件(event)是状态发生变化时,软件发出的通知。

事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构。它分成四个部分。

事件队列(event queue):接收事件的入口

分发器(event mediator):将不同的事件分发到不同的业务逻辑单元

事件通道(event channel):分发器与处理器之间的联系渠道

事件处理器(event processor):实现业务逻辑,处理完成后会发出事件,触发下一步操作

对于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成事件代理和事件处理器两部分。

(三)微核架构

微核架构(microkernel architecture)又称为"插件架构"(plug-in architecture),指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。

内核(core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。

(四)、微服务架构

微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的升级。

每一个服务就是一个独立的部署单元(separately deployed unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。

(五)、云架构

云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。

它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。

这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。

处理单元:实现业务逻辑

虚拟中间件:负责通信、保持sessions、数据复制、分布式处理、处理单元的部署。

二、开发平台

ERP平台、金融电商平台、小程序平台、网站平台、bpm平台、低代码开发平台等等;

厂家有天翎、顶点、天纵、清流、K2等

开发语言有区分:dephp、java。net等;

三、如何选择合适的开发平台?

平台的选型,无非是从客户业务需求的角度,以及对应的品牌形象和案例沉淀几个角度去选择;

建议可以开箱即用,多试用几次,就找到适合的产品,通俗的说,就是货比三家。

管理顾问,每天成长一点点,努力成就自己的优秀。

谈谈微服务架构是一个怎样的存在?

微服务是近些年被广泛提及的一个概念, 微服务架构可以理解为一个轻量级的服务治理方案, 也就是将系统的功能,通过服务的形式发布到服务器上,对服务进行组合调用,实现具体的功能,解决实际业务问题的架构风格。

微服务产生于单体应用的扩大化,随着信息化不断发展,企业对软件功能的要求越来越具体,也愈发的细致,如果通过应用程序来实现,必然是一个极其复杂而又痛苦的过程,由此诞生了微服务的概念。就是 将功能发布成服务,应用程序通过调用不同的服务来实现业务, 这种设计架构称之为微服务。

微服务架构的优点在于每个服务可以有独立的团队开发,服务之间互不干涉,保障了系统的稳定性。由于功能被拆分到更细的粒度,有效的降低了程序的复杂程度,对硬件的需求也随之降低,但是微服务也有一些不足,比如服务调用带来的系统复杂性,服务间的依赖关系也是难以管理的,如何构建合理的服务依赖是考验架构师能力的重要依据;最后,微服务架构的部署以及跟踪也是很难的。总之, 微服务架构有着自身的应用场景以及特点,了解哪些场景适合微服务比掌握微服务的具体技术更为重要, 适当的技术用在适当的场景,才能发挥合适的价值。

微服务架构是当前最流行的技术架构,主要组件有注册中心、网关、配置中心和各种微服务模块。架构灵活、易扩展、可动态扩容。

在微服务之前,系统架构经历很长时间的演变,简述如下:

1.无架构

页面逻辑和业务逻辑混在一起,甚至页面直接访问数据库。

优点:因为没有太多的访问路径转换,效率是最高的;

缺点:没有分层,逻辑混乱,维护难,扩展难。

2.MVC

架构

单系统,表现层、逻辑层、业务层分开,各层分工协作。

优点:逻辑清晰、分工明确、易维护。

缺点:系统集中部署,属于强耦合,某些业务模块出现异常时,会导致整个系统无法访问。

3.SOA架构

面向服务的架构,多个系统分布式部署,通过消息总线进行通讯。

优点:各个系统的业务相对独立,耦合低;

缺点:消息总线负担太重,中心化太重,接口缺乏规范。

4.微服务架构

一个系统,按照粒度规划,划分为很多的微服务,而每个微服务,对应一个具体的业务实现,并可拥有自己独立的数据库,整个就是微服务架构。

优点:如上,架构灵活、易扩展,在实际运营时,按需扩容,集群部署。各个微服务业务互不影响,耦合性低;

缺点:开发成本高,对部署有一定的专业性要求。

从技术而言,微服务已经是一个设计理念很成熟的架构,可满足不同层次,不同业务场景的需要,而且经过多个版本的迭代,该踩的坑也基本踩完,生态系统完整,开源组件选择多多,很有一统天下的趋势,值得尝试。

但,不要为了微服务而微服务,要根据自己实际的要求去做抉择和取舍。

比较,适合自己的,才是最好的!

微服务是近几年技术社群讨论很多的一种软件架构方式,可以说是SOA的现代版本、 时尚 版本。不过这次浪潮不是由大公司倡导的,而是由工程师们引领的。比如,它采用工程师们熟悉的RESTful接口,而不是笨重的WebService,也不需要一大堆昂贵的中间件。

那微服务为什么流行起来?按理说它们都是让软件更加模块化,使相互之间保持松耦合,从而优化系统架构。

国内流行起来的微服务架构——RestCloud

RestCloud 为了保证服务不注册中心癿高可用性,服务不注册中心通过水平扩展癿能

力允许对服务不注册中心迚行集群配置,开在网关层做了服务癿注册癿数据缓存。

Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中癿一部分,它基于 Netflix Eureka做了二次封装。主要负责完成微服务架极中的服务治理功能。

易用性

如果你目前使用SpringBoot开发API服务则无需修改任何代码,只需引入RestCloud配置中心的jar包即可由配置中心接管所有配置,对开发人员无任何感知,如果你使用RestBoot开发平台开发API则已经是天然集成了配置中心的客户端Jar包无需任何依赖。 如果你使用php,c#开发目前RestCloud并没有提供现成的解决方案,你需要通过Rest API来接入RestCloud配置中心并自已在本地实现配置缓存管理。

稳定性

RestCloud采取全新的本地配置持久化技术,保证配置中心不会形成单点故障,因为所有的配置数据在应用则具有本地缓存和持久化技术,假定RestCloud配置中心出现故障且长时间未能恢复的情况下,应用则的程序会自动读取本地缓存配置数据. 进一步假定这时应用也刚好出现故障需要重启,则本地缓存在重启后将会消失,这时应用将自动从持久层再次读取配置数据到缓存中从而恢复运行,所以RestCloud配置中心不会出现故障后影响应用的运行,RestCloud配置中心优于目前开源的大多数配置中心解决方案。

易用性

如果你目前使用SpringBoot开发API服务则无需修改任何代码,只需引入RestCloud配置中心的jar包即可由配置中心接管所有配置,对开发人员无任何感知,如果你使用RestBoot开发平台开发API则已经是天然集成了配置中心的客户端Jar包无需任何依赖。 如果你使用php,c#开发目前RestCloud并没有提供现成的解决方案,你需要通过Rest API来接入RestCloud配置中心并自已在本地实现配置缓存管理。

稳定性

RestCloud采取全新的本地配置持久化技术,保证配置中心不会形成单点故障,因为所有的配置数据在应用则具有本地缓存和持久化技术,假定RestCloud配置中心出现故障且长时间未能恢复的情况下,应用则的程序会自动读取本地缓存配置数据. 进一步假定这时应用也刚好出现故障需要重启,则本地缓存在重启后将会消失,这时应用将自动从持久层再次读取配置数据到缓存中从而恢复运行,所以RestCloud配置中心不会出现故障后影响应用的运行,RestCloud配置中心优于目前开源的大多数配置中心解决方案。

网站链接:

参考资料:

php为什么不适合做微服务

php不适合做微服务原因:例如与硬件通讯.至于开发的话,你可以用swoole扩展或者grpc。

PHP毕竟是CGI脚本,很多底层的驱动级的工作还不能做,而且主要是其面向对象不够完善,在SOA上的应用还是有些不足。当然因为PHP能够做些位计算什么的,可以很方便的做些帧协议的操作,比如Radius协议的实现等。

快捷高效:

PHP的内核是C语言编写的基础好效率高,可以用C语言开发高性能的扩展组件;PHP的核心包含了数量超过1000的内置函数,功能应有尽有很全面,开箱即用程序代码简洁;PHP数组支持动态扩容,支持以数字、字符串或者混合键名的关联数组,能大幅提高开发效率。

PHP是一门弱类型语言,程序编译通过率高,相对其他强类型语言开发效率快;PHP天然热部署,在php-fpm运行模式下代码文件覆盖即完成热部署;PHP经过20多年的发展,在互联网上可以搜到海量的参考资料供参考学习。

关于php微服务架构的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php微服务架构 php微服务架构有哪些的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did225874
更新时间:2023-05-11   阅读:20次

上一篇: php利用redis踢出 php redis lua

下一篇:php获取季度开始月份 php获取上个月

相关资讯

最新资料更新

  • 1.php求数组的交集 php数组处理函数
  • 2.php圆形头像代码 php生成圆形图
  • 3.包含php-fpm-t的词条
  • 4.php队列和缓存 php中的九大缓存技术
  • 5.php编程实验总结 php简单实训项目
  • 6.php循环处理速度 phpforeach循环
  • 7.php实例上传txt代码的简单介绍
  • 8.php闭包this php闭包函数使用场景
  • 9.php自学教程推荐 php入门课程
  • 10.php匹配尖括号 括号匹配python代码
  • 11.php截取汉子 php 截断
  • 12.vista打不开php php页面打不开
  • 13.php赋值后改变 php变量赋值
  • 14.php如何制作游戏 php游戏源码
  • 15.php脚本在线解密 php解密网站程序源码
  • 16.php蓝色的代码 html颜色代码
  • 17.基于php在线聊天 php 在线聊天
  • 18.php判断字符串的编码 php 判断字符串是否存在某个字符串
  • 19.php数据抓取实例 php采集数据
  • 20.php可以回收吗 php还有人用吗

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]