微服务和RPC

微服务

在传统的开发模式中,我们通常将系统的各个服务部署在单台机器。随着服务器的扩展,这种方式已经完全无法满足系统大规模的扩展需要,分布式系统由此诞生。

在分布式的基础上,进一步发展了微服务的概念。

微服务是一种架构风格,一个大型的复杂软件应用由一个或多个微服务组成。系统中的各个微服务课被独立部署,各个为微服务之间是松耦合的。

更好的微服务文章:https://www.cnblogs.com/stulzq/p/8573828.html

RPC

RPC (Remote Procedure Call,远程过程调用) 允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数。简单的来说就是通过一定的协议和方法,使得调用远程计算机上的服务就像调用本地服务一样。

RPC的诞生让构建分布式应用更容易,极大地扩大了系统的可扩展性和容错性。为复杂业务逻辑的系统进行服务化改造和高可用性升级提供了可能。

回顾历史RPC分为三代

第一代

CORBA

DCOM (分布式组件模型)

Java RMI (Java远程调用接口)

第一代的特点是实现复杂,没有统一的标准,大多来自巨头的私有实现,跨平台性不佳。

第二代

XML-RPC

SOAP

WebService

特点是使用http协议+xml来解决跨平台的问题。但是规范比较复杂。使用率不高。鉴于第二代早起RPC存在的缺点。随后出现了一批改良过的框架。

PHPRPC、Hprose、JSON-RPC、Hession、Thrift。

这类RPC的特点是跨平台性和多语言兼容有了更大的发展,也支持动态RPC调用,但仍停留在方法的调用为主的设计上。

第三带 RPC

dobbo

motan

ZeroC Ice

gRPC

这一代的RPC除了提供了方法调用的传统RPC功能外,更多加入了方法治理的功能。

在PHP的swoft框架中使用微服务框架

调用端代码

先修改实例中或自己新建配置配置、客户端(调用端)。

uri可以定义多个。自动做负载均衡。uri配置的是服务端的ip和端口。

在app目录下的lib中定义ICourse.php文件

注意@Breaker(“Course”) 是下面CourseBreaker的声明。

定义Pool池用来连接RPC服务的。

@Pool(name=”user”) 声明这个类的连接池名字叫user。由于swoft用的是注解、那么用的时候也用这个名字,代码如下

调用代码

服务端代码

由于官网文档不太清晰、这里详细记录。

服务端之实现服务代码即可

发表评论