网站首页 > java教程 正文
??"微服务"加个引号是因为这不是传统定义的微服务架构,顶多算是"小服务"架构,因为服务实例由集群节点统一加载,非独立部署。下面以图说明一下服务调用流程。
一、服务调用流程
- 节点主进程:类似于Istio的SideCar,负责对外网络及集群内节点间的通信,另外提供内置分布式的存储引擎(目前元数据均存储于此);
- 节点子进程:负责加载服务实例与服务调用,支持服务实例的热更新。
1.2. 客户端调用服务请求经由负载均衡转发至主进程的WebHost内;
3.4. 主进程根据服务标识将请求通过共享内存队列发给子进程;
5.6. 子进程的服务管理器如果找不到服务实例,则向主进程请求加载已编译的服务字节码;
7.8. 主进程从内置存储引擎读取服务模型编译的字节码返回,子进程通过ClassLoader加载并缓存服务实例;
9.10. 服务实例调用指定的服务方法返回给主进程的WebHost;
11.12. WebHost返回服务调用结果给客户端。
以上步骤均为异步,数据序列化均为类似于webpack的自定义格式。
二、开发流程演示
??为了小伙伴们有个直观的认识,下面演示一个简单的开发流程。
1. 创建数据结构
??通过IDE新建如下图所示的数据结构,后台自动生成相关的实体代码。
实体模型可映射至不同数据库(Sql, NoSql或内置数据库)
2. 创建业务服务
??通过IDE新建如下图所示的查询实体的服务,注意服务方法必须返回CompletableFuture,因为整个架构是全异步的。
3. 创建用户界面
??通过IDE新建如下图所示的视图模型(基于TypeScript的Vue组件),调用后端服务的代理方法后台自动生成,且同样为异步(返回Promise)。
整个过程一个浏览器搞定,不需要写一行配置代码。
三、并发性能测试
??跟同样是异步的Spring WebFlux简单对比测试一下并发呑吐与响应,测试配置为Mac主机(压测)->4核I7虚拟机(服务)。
- WebFlux:
wrk -t2 -c200 -d20s http://10.211.55.8:8080/hello
Running 20s test @ http://10.211.55.8:8080/hello
2 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 12.46ms 1.51ms 47.08ms 75.10%
Req/Sec 8.06k 293.27 8.52k 81.00%
320913 requests in 20.01s, 28.16MB read
Requests/sec: 16039.85
Transfer/sec: 1.41MB
- 本框架
wrk -c200 -t2 -d20s -s post_bin.lua http://10.211.55.8:8000/api
Running 20s test @ http://10.211.55.8:8000/api
2 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 2.86ms 5.19ms 121.99ms 98.55%
Req/Sec 40.50k 2.11k 46.14k 69.00%
1611550 requests in 20.01s, 242.83MB read
Requests/sec: 80546.35
Transfer/sec: 12.14MB
四、如何安装尝鲜
??目前仅在Ubuntu20.04上开发测试,暂不准备支持其他非Linux操作系统.
- 从Git clone打包好的运行时(注意是java分支):
git clone -b java https://github.com/enjoycode/appbox.deploy.git
- 安装第三方依赖包
cd 克隆目录
sudo ./install-dependencies.sh
- 启动运行
- 首次初始化运行(替换以下节点地址为本机地址):
./appbox --init=10.10.10.10:9000 --peer=1.1.1
- 重启
./appbox
- 打开浏览器访问IDE
http://地址:8000/dev/index.html, 用户名: Admin 密码:随意(暂未实现验证密码)
五、本篇小结
??整个java实现从7月底开始历时5个月,中间还绕了1个月的弯路,争取1至2个月内达到基本可用的状态,在此欢迎感兴趣的小伙伴加入我们!
猜你喜欢
- 2024-11-01 Java互联网架构-如何快速搭建一个微服务架构
- 2024-11-01 阿里内网不传之秘:Java微服务实战笔记,共140个案例手把手教学
- 2024-11-01 这位Java程序员,你真的懂微服务吗?不懂还不快来学(干货赏析)
- 2024-11-01 Java培训课程干货分享,什么是微服务-武汉兄弟连教育
- 2024-11-01 Java:Java中的微服务(java微服务搭建)
- 2024-11-01 国内比较火的5款Java微服务开源项目
- 2024-11-01 如何通过Serverless提高 Java 微服务治理效率?
你 发表评论:
欢迎- 最近发表
-
- pyinstaller打包python程序高级技巧
- 将python打包成exe的方式(python打包成exe的方法)
- Python打包:如何将 Flask 项目打包成exe程序
- py2exe实现python文件打包为.exe可执行程序(上篇)
- 如何将 Python 项目打包成 exe,另带卸载功能!
- Python打包成 exe,太大了该怎么解决?
- 可视化 Python 打包 exe,这个神器绝了!
- 案例详解pyinstaller将python程序打包为可执行文件exe
- Cocos 3.x 菜鸟一起玩:打包window程序
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)