PHP程序员简单的开展服务治理架构操作详解(三)


Posted in PHP onMay 14, 2020

本文实例讲述了PHP程序员简单的开展服务治理架构操作。分享给大家供大家参考,具体如下:

服务治理所治理的服务需要合理的部署与管理,本章我们讲一下SOA(面向服务架构),本人语言文笔不好,所以本章内容使用问答模式,参考了 [SOA面试题(http://www.jdon.com/soa/soa-interview.html] 的面试题,通过对此站复杂的描述进行简单的讲解。

概述

SOA代表了面向服务架构,仅仅是一种概念,通过这种概念而演变出的各种各样的服务架构都可称为SOA架构,SOA核心的概念就是 “松耦合”。

非SOA的架构

多语言开发

PHP程序员简单的开展服务治理架构操作详解(三)

同语言开发

PHP程序员简单的开展服务治理架构操作详解(三)

服务与服务之间可能会是不同的开发语言或相同语言开发,他们的调用方式依旧只可以通过http去获取,或者比较流行的Restful Api的形式,无论是在性能与开发的过程中都是很笨的办法。

什么是SOA的服务

PHP程序员简单的开展服务治理架构操作详解(三)

在现实世界中,服务是一种我们花费购买到的一种预期的服务。

1、(来自真实世界):你去餐馆订餐,您的订单首先进入到柜台,然后在厨房进行食物准备,最后服务员提供的食物。因此,为了实现一个餐厅订购服务,您需要三个逻辑部门/服务协同工作(计帐,厨房和服务员)。在软件世界同样的方法称为业务服务。

2、(软件世界):你去亚马逊订购了一本书,有不同的服务,如支付网关,库存系统,货运系统等共同完成一本书的订购。

PHP程序员简单的开展服务治理架构操作详解(三)

所有的服务是自包含的,合乎逻辑。他们就像黑盒子。总之,我们并不需要了解业务服务的内部工作细节。对于外部世界,它只是一个能够使用消息交互的黑盒子。例如在“支付网关”业务服务获得消息“检查信贷”后会给出输出:这个客户的信贷有或没有。对于“订单系统”,“支付网关”的服务是一个黑盒子。

服务的主要特点是什么

A) SOA组件是松耦合的。当我们说松耦合,这意味着每一个服务是自包含单独存在的逻辑。举例来说,我们采取了“支付网关”的服务,并将它附加到不同的系统。

B) SOA服务是黑匣子。在SOA中,服务隐藏有内在的复杂性。他们只使用交互消息,服务接受和发送消息。通过虚拟化一个服务为黑盒子,服务变得更松散的耦合。

C) SOA服务应该是自定义: SOA服务应该能够自己定义。

D) SOA服务维持在一个列表中: SOA服务保持在一个中央存储库。应用程序可以在中央存储库中搜索服务,并调用相应服务。

E) SOA服务可以编排和链接实现一个特定功能: SOA服务可以使用了即插即用的方式。例如,“业务流程”中有两个服务“安全服务”和“订单处理服务” 。从它的业务流程可以实现两种类型:一,您可以先检查用户,然后处理订单,或反之亦然。是的,你猜对了,使用SOA可以松散耦合的方式管理服务之间的工作流。

什么是SOA

SOA代表了面向服务的架构。 SOA是一种使用松耦合的黑盒子服务构建业务应用的体系架构,这些服务可以通过编排连接在一起以实现特定的功能。

什么是合同,地址和绑定?

这是三个SOA的标准术语。每个服务对外开放地址,在服务开发中进行合同约定,客户端绑定服务进行开发调用。

  • 合同是两方或多方之间的协议。它定义了一种客户端如何与服务通信的协议。从技术上讲,它有描述参数和返回值的方法。
  • 地址表明在哪儿能找到这种服务。地址是一个URL,它指向服务的位置。
  • 绑定是决定这个端点如何可以访问。它决定了如何完成通信。例如,你暴露你的服务,可以使用SOAP over HTTP或通过TCP的BINARY进行访问。因此,对于这些通信介质将被创建两个绑定。
    n

什么是可重用的服务?

服务是一个自主的,可重复使用的,可发现的,无状态的,有一定粒度的功能,并且是一个复合应用程序或一个组合服务的一部分。

可重复使用的服务通过业务活动标识,这个业务活动是使用服务规范(设计时合同)描述的。

一个服务约束是,包括安全性,QoS,SLA,使用策略,可以由多个运行时的合同 多个接口(WSDL中的Web服务)以及多个实现(代码)定义的。

可重复使用的服务应在被管制在其从设计到运行整个企业级生命周期。其重用应通过规范流程来推动,重用应该是可测量的。

在一个SOA中如何实现松耦合?

实现松耦合一种策略是使用服务接口(WSDL中为SOAP Web服务)来限制服务之间的依赖性,对消费者隐藏服务实现。松耦合可以通过实施服务的功能封装以及限制服务接口的实现变化影响来解决。然而,在某些时候,你需要改变接口,也不会影响服务的消费者,除了管理多个安全约束,多种传输,以及其他方面的考虑。

SOA的服务无状态或有状态?

服务应该是无状态的。它有一个无状态的执行上下文,但它不会有中间状态来等待一个事件或一个回调。状态有关的数据的保留一定不能超出的服务的请求/响应。这是因为状态管理消耗了大量的资源,这可能会影响服务的可重用 可伸缩性和可用性。

在RPC服务启动后,服务一直保持沉睡状态,只有在有请求时才会唤醒,你可以称他为无状态或有状态

在SOA中我们是否需要从头开始构建系统?

否。如果您需要集成现有系统为业务服务,你只需要创建松耦合的包装,包装您的现有系统,并以一种通用的方式暴露功能给外部世界。

其实并不需要重新构建,只需要将每个服务继续分解,分类出对外与对内。

PHP程序员简单的开展服务治理架构操作详解(三)

什么是服务和组件之间的区别?

服务组件来实现业务功能的逻辑组件分组。组件是为实现服务这个目标的途径。组件可以使用Java,C#,C,但服务将以通用格式如像Web服务方式被暴露。

说的就是我们通过RPC调用其他服务 (thrift)

预告

看到这里大概了解了SOA,这个时候我透露一个秘密,SOA其实还有另外一个名字叫“服务治理”,是的,就是我们一直在讲的服务治理。下一章回到正题,讲一下服务治理实现

PHP程序员如何简单的开展服务治理架构(一)
//3water.com/article/186529.htm

PHP程序员如何简单的开展服务治理架构(二)
//3water.com/article/186533.htm

本猿人写了一个服务治理的框架
https://github.com/CrazyCodes/Service-Govern

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
初探PHP5
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
PHP 错误之引号中使用变量
May 04 PHP
用PHP将网址字符串转换成超链接(网址或email)
May 25 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
php中fsockopen用法实例
Jan 05 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 #PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 #PHP
PHP程序员必须知道的两种日志实例分析
May 14 #PHP
Laravel框架集合用法实例浅析
May 14 #PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 #PHP
Laravel框架源码解析之入口文件原理分析
May 14 #PHP
Laravel框架源码解析之反射的使用详解
May 14 #PHP
You might like
模仿OSO的论坛(五)
2006/10/09 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
python实现折半查找和归并排序算法
2017/04/14 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
本科毕业生求职自荐信
2014/04/09 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB