框架三要素
1. Service 通信
2. 服务管理
3. 开发组件
 
为什么需要服务
1.自治性
2.可组合
3.异构性
2.弹性扩展
 
-实现方式-
 
共享库
1.二进制文件/Composer包
2.优点:实现简单、使用方便
3.缺点:隔离性差、部署升级麻烦
 
REST
1.解决了隔离性和部署问题
2.优点:简单通用
3.缺点:HTTP 不支持主动推送、TCP开销多、长连接相关支持差
 
-服务设计-
 
TCP Server/Client
1.服务名+接口名+参数+环境信息
2.服务提供方(接收 socket 消息,执行方法,发送数据)
3.服务调用方(连接服务,指定格式向服务发网络请求,接收数据)
 
数据封包、解包由 Swoole 根据配置在底层解析,应用获取完整数据。
 
-服务治理-
 
数据中心
1.Consul agent 集群
2.支持 DNS 和 HTTP API 动态配置管理
 
服务发现/负载均衡/心跳检测
1.服务启动时(onStart)注册到 Consul
2.服务停止时(onShutdown)从 consul 清除
3.数据中心收到配置变更推送到调用方
4.客户端实现轮询负载均衡机制
5.心跳检测进程检测服务状态,动态上下线
 
进程调度
1.Supervisor 自启动 Service 进程
2.断电重启
 
开发组件
swlib/swpod                       Swoole协程PDO组件
symfony/console                可编程命令行组件
symfony/routing                 路由组件
symfony/dotenv                  配置解析组件
symfony/event-dispatcher  事件调度组件
 
其余
服务监控统计
 

[分享会] 微服务框架设计 (基于Swoole)的更多相关文章

  1. 基于Spring-Cloud的微服务框架设计

    基于Spring-Cloud的微服务框架设计 先进行大的整体的框架整理,然后在针对每一项进行具体的详细介绍

  2. 基于.NET CORE微服务框架 -surging 基于messagepack、protobuffer、json.net 性能对比

    1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输 ...

  3. 如何基于gRPC沟通微服务框架

    本文我们来讲解一下如何使用 gRPC构建微服务,gRPC是一个开源框架,可用于构建可扩展且高性能的微服务并创建服务之间的通信. 背景 随着企业越来越多地转向微服务,对构建这些微服务的低延迟和可扩展框架 ...

  4. 基于thrift的微服务框架

    前一阵开源过一个基于spring-boot的rest微服务框架,今天再来一篇基于thrift的微服务加框,thrift是啥就不多了,大家自行百度或参考我之前介绍thrift的文章, thrift不仅支 ...

  5. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  6. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  7. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...

  8. 基于.NET CORE微服务框架 -浅析如何使用surging

    1.前言 surging受到大家这么强烈的关注,我感到非常意外,比如有同僚在公司的分享会上分享surging, 还有在博客拿其它的RPC框架,微服务做对比等等,这些举动都让我感觉压力很大,毕竟作为个人 ...

  9. 基于spring-boot的rest微服务框架

    周末在家研究spring-boot,参考github上的一些开源项目,整了一个rest微服务框架,取之于民,用之于民,在github上开源了,地址如下: https://github.com/yjmy ...

随机推荐

  1. 【Java】Java环境变量配置

    一.windows系统 右键你的电脑(计算机/此电脑)打开属性->高级系统设置->环境变量,在系统变量里配置三个环境变量. 假设jdk的安装路径为C:\Program Files\Java ...

  2. 74HC595 8位移位寄存器的使用小结

    请查看我的博客园文章,比较详细. https://www.cnblogs.com/CodeWorkerLiMing/p/11964258.html

  3. 2019 CSP-J复赛游记

    不出行?不出行考屁呢? 今天的CSP-J似乎比去年简单了一些,可它... 好了,来说一说我的情况. T1:太水,5分钟秒 T2:这个数据有点尴尬,双重循环铁定爆,用链表有有一点小题大做.本蒟蒻在考场上 ...

  4. 如何查看WinDbg扩展有哪些命令

    如果您想查看任何windbg扩展所支持的命令,可以采用各种方法. 你可以用!<ext_name>.help命令查看该扩展支持的所有命令.用扩展模块名替换<ext_name>.( ...

  5. 【数论】[涨姿势:同余]P2312解方程

    题目描述 已知多项式方程:\(a_0 + a_1x + a_2x^2+...+a_nx^n = 0\) 求这个方程在[1,m]内的整数解 \(1\leq n\leq100,|a_i|\leq 10^{ ...

  6. exlucas易错反思

    模板和题解 复习了一下 exlucas的模板,结果写挂四次(都没脸说自己以前写过 是该好好反思一下呢~ 错的原因如下: 第一次WA:求阶乘的时候忘了递归处理(n/p)! 第二次WA:求阶乘时把p当成循 ...

  7. MyBatis框架,增删改查

    一.recourses中核心配置文件mybatis-config.xml 二. recourse中jdbc.properties 三.entity实体类 四.Dao层 五.ISmbmsUserDao. ...

  8. MSSQL随机修改时间

    GO DECLARE @BDate datetime, @EDate datetime SET @BDate = '20190801' --上限 SET @EDate = '20190819 23:5 ...

  9. Zookeeper循环注册监听器

    Zookeeper中的监听器只执行一次,需要在watcher类中重写process方法,以达到重复注册监听器的效果 /** * 连接zk服务器 * */ public static void conn ...

  10. gitlab 上传代码

    #生成公钥ssh-keygen -t ed25519 -C "xxx@tianwang.com"#拷贝公钥pbcopy < ~/.ssh/id_ed25519.pub 在网页 ...