重要事情说三遍:使用go-yea前,请先下载yea,并且执行yea/pom.xml,不然会缺少依赖Jar包。
mvn clean install -Dmaven.test.skip=true
YEA项目地址:https://gitee.com/yiyongfei/yea
GO-YEA是什么
GO-YEA是YEA的一个应用,它是一个极其容易使用的分布式框架,致力于提供产品的快速启动以及后续的服务伸缩。 其核心部分包含:
GO-YEA 传送门
GO-YEA能做什么
首先它是一个分布式服务框架,通过高性能的RPC远程调用以及SOA服务治理,提升产品在各个阶段不同的可伸缩要求。以达到最大程度降低由于伸缩性的改变对整个项目的变动影响。
系统伸缩性通常以三种方式完成:1、增加副本;2、功能分割;3、数据分割。YEA主要考虑前二种方式。
其次它是一个快速启动的应用开发平台,集成了项目中常用的基础组件。
认证授权:基于Shiro实现的可配置授权管理系统,通过页面可定义整个系统的权限、角色、授权。
缓存:按照Map接口对Redis和Ehcache封装,降低使用门槛,同时也减少未来缓存方案的迁移开销(本地缓存向分布式缓存的迁移)。
ORM:基于Mybatis完成数据库层面的增、删、改、查操作。
代码生成:基于数据表生成Sql-Mapping文件及相应的Entity、PK、Domain类。
序列化:提高统一的序列化接口,支持三种序列化方式:FST、Hessian2、原生。
等等
测试环境:三台Vultr的云主机,各1 CPU(单核),1024MB 内存,一台部署go-yea-web(Tomcat),一台部署Launcher(启三个服务,每个服务占用堆内存128MB),一台部署Jmeter用于测试。
测试软件:Jmeter。
测试说明:调用api:permission/operation/query。执行路径Jmeter--(http)-->Go-yea-web--(netty)-->Launcher--(tcp)-->DB--(tcp)-->Launcher--(netty)-->Go-yea-web--(http)-->Jmeter
测试结果(360并发):
详细数据: 详细结果
提高并发数,提升性能指标:可以考虑先适当增加CPU核数和内存容量,然后再横向扩充。
纵向扩展对比(二台各2 CPU,4096MB 内存云主机,999并发):
详细数据: 详细结果
1. 版权 按https://golang.org/doc/copyright.html, 原文内容使用 Creative Commons Attribution 3.0 License, 代码使用 BSD license. 使用原文之外的部分, 需注明出处: https://blog.csdn.net/big_cheng/article/details/107436139. 2. 原文 Publ
本来考核内容是Github上写博客,奈何自己鼓捣了好久也弄不来,那就先在这里记录一下第一天的考核内容吧。 第一天的考核内容是用go语言判断输入的年份是平年还是闰年。 首先,判断平、闰年的条件: 1:能整除4但不能整除100 2:能整除400 这里将用到if条件语句,接下来就放上代码吧: package main import "fmt" var year int func main()
Go 语言时间包time的使用 原文:链接 时间类型 time.Time类型表示时间。 //时间类型 func timeDemo() { now := time.Now() fmt.Println(now) //2019-04-20 13:52:35.226397 +0800 CST m=+0.000336111 fmt.Println(now.Format("20
发布GoModule 英文原版:https://blog.golang.org/publishing-go-modules 介绍 这是系列文章的第三部分 1-使用GoModule 2-迁移到GoModule 3-发布GoModule(当前) 4-GoModule: v2及新版本 本文讨论如何编写和发布module,以便其他module可以依赖它们。 请注意:这篇文章涵盖了v1及以下版本的开发。如果
简介(Introduction) 翻译自 Go 官方博文 Publishing Go Modules。 Jean de Klerk 21 August 2019 这篇文章是系列文章的第三部分。 Part 1 — Using Go Modules Part 2 — Migrating To Go Modules Part 3 — Publishing Go Modules(this post) Pa
开发中会用到的一些时间相关api,先浅记录一部分吧。 格式转换 // 字符串 → 时间 time, _ := time.Parse("2006-01-02 15:04:05 -0700 MST", "2022-05-10 00:00:00 +0800 CST") // 时间 → 字符串 now := time.Now() // 返回的是Time类型 time := now.Format("2006
分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。 分布式Minio有什么好处? 在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。 数据保护 分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit
你们使用Go开发应用,是使用那个框架,有用GoFly快速开发框架吗?
本文向大家介绍在windows下快速搭建web.py开发框架方法,包括了在windows下快速搭建web.py开发框架方法的使用技巧和注意事项,需要的朋友参考一下 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py。它由一名黑客所创建,但是不幸的是这位创建者于2013年自
本文档的目的是让您学习完成之后,能对 Jboot 有一个整体的了解,开始基于 Jboot 开发自己的应用程序。 本文档假设您已经具备了如下基本技能: Java 编程语言的使用 Maven 依赖管理的使用 Java 开发工具的使用 通过开发工具创建 Maven 项目 略 在 pom.xml 上添加 Jboot 依赖 <dependency> <groupId>io.jboot</groupI
本指南将解说如何构建并测试用于开发的 Ceph 。 开发 run-make-check.sh 脚本会安装 Ceph 依赖,一切都在调试模式下编译、并进行一系列测试,以验证结果正如所需。 $ ./run-make-check.sh 开发集群的部署 Ceph 包含一个名为 vstart.sh 的脚本(还有开发集群的部署),可以让开发者们在开发系统上用最简部署快速地测试代码。编译成功后,用下列命令开始部
4.1. 1、业务边界优化 创业公司有很多可变性,要做的系统也无数,如何保证业务系统的边界是非常难的,我们其实走了很多弯路,图-稍后补 4.2. 2、静态api理论 当需求和ue定下来之后,就开始编写静态api,这样app、h5、前端就可以使用静态api完成功能,而后端也可以以静态api为标准来实现,整体效率还是比较高的。 另外还有基于api生成http请求的思考(未完成) 4.3. 3、api约