框架三要素
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. POJ1475 Pushing Boxes(BFS套BFS)

    描述 Imagine you are standing inside a two-dimensional maze composed of square cells which may or may ...

  2. 重装Zend Studio后如何恢复之前的设置

    Program Files (x86)\Zend\Zend Studio 10.0.0\configuration\.settings 这个目录下的文件备份下来,重装安装Zend Studio后覆盖到 ...

  3. 数据分析 - pandas

    简介 pandas是一个强大的Python数据分析的工具包,它是基于Numpy构建的,正因pandas的出现,让Python语言也成为使用最广泛而且强大的数据分析环境之一. Pandas的主要功能: ...

  4. O2O项目之一 环境搭配

    技术栈:vue全家桶(使用nuxtjs:https://zh.nuxtjs.org/guide/installation  ) + ssr + redis + mongodb + wabpack + ...

  5. 51nod1814 Clarke and string

    [传送门] 直接想最暴力的做法就是正解了.每次询问都把两个串的回文树建出来,然后再两棵树上同时dfs,经过相同的节点答案就加一.遇到一个不存在的就退出.再把询问记忆化一下就OK了.复杂度是 $O(n ...

  6. EJS的个人总结

    什么是模板引擎? 用于Web开发的模板引擎是为了使用用户界面与业务数据(内容)分离而产生的,使用模板语法编写的模板代码通常放在具有特的格式的文档中,经过模板引擎编译之后就会生成一个标准的HTML文档. ...

  7. 论文编写工具使用(1)latex软件

    1什么是LaTeX 能用编写程序的模式写论文,将你从格式编辑解脱出来,套用现成的论文程序模板,直接生成.LaTEX(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/),文字形式写作L ...

  8. 网络命令——last、lastlog、traceroute、netstat

    1.last命令(查看目前和过去用户的登录信息) 2.lastlog命令(检查某用户上次登录的时间): 3.traceroute命令: 显示数据包到主机间的路径. 4.netstat命令: 查看本机已 ...

  9. shell脚本获取传入参数的个数

    ts.sh #!/bin/bash echo $# 输出 [root@redhat6 ~]# ./ts.sh para1 [root@redhat6 ~]# ./ts.sh para1 para2 [ ...

  10. eclipse debug调试 class文件 Source not found.

      1.情景展示 明明有class文件,为什么提示没有? 2.原因分析 这是eclipse与myeclipse的不同之处,myeclipse会自动加载运行时所需的的class文件,而eclipse则需 ...