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 相关文章推荐
PHP4与PHP5的时间格式问题
Feb 17 PHP
整理的9个实用的PHP库简介和下载
Nov 09 PHP
深入PHP异步执行的详解
Jun 03 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
Zend Framework教程之Zend_Config_Ini用法分析
Mar 23 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
如何用PHP实现多线程编程
May 26 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python读写ini文件示例(python读写文件)
2014/03/25 Python
python对字典进行排序实例
2014/09/25 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
Python+Appium新手教程
2021/04/17 Python
详解MySQL的半同步
2021/04/22 MySQL