sumk 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
sumk 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
sumk 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache 2.0
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开源组织
地区 国产
投 递 者 游夏-sumk
适用人群 未知
收录时间 2016-12-30

软件简介

       sumk是一款轻量级互联网框架。拥有开发速度快性能好、易于横向扩展等特点。并且集成了一些互联网中常见功能,sumk入门文档点这里

主要功能特点简单介绍如下:

  • 配置管理:sumk默认的配置是app.properties,同时内置了http、zookeeper两种统一配置中心。所有这些配置,都支持热变更,而不需要重启应用。并且提供了配置变更的通知机制。大多数配置都能兼容半角和全角符号。

  • 微服务:服务注册、自动发现、故障转移、负载均衡等常见功能这里也都提供,并且使用更简单。服务器端只要在方法上添加@Soa注解,就能被其它实例调用,并且它还能在调用链上自动传递userId参数。客户端提供了同步、异步两种调用方式。

  • Web服务:主要针对移动端访问(PC端也可以使用),也可以用作微服务的网关。只要在方法上添加@Web注解就可以被html访问,比spring mvc更方便(spring mvc还需要在参数上添加注解)。本模块可以不使用tomcat,因为sumk内置了jetty服务器。还内置了通信加密,参数的签名验证等功能,可以在http模式下享受https的安全性

  • IOC:类似于spring的IOC功能,但拥有自己的特色。比如支持数组、集合方式的注入

  • ORM:类似于Hibernate的ORM,支持分表。它的特点是可以结合redis做准实时缓存,它跟hibernate二级缓存的显著区别就在于准实时。开发人员在操作数据库的时候,默认情况下,他并不关心数据来自缓存还是数据库。整个sumk框架,只有ORM功能有使用门槛点这里看它的帮助文档

  • 事务:支持读写分离、权重、多数据源

  • 数据库事件监听:通过ORM修改数据表的内容,在事务提交后,可以获取到它的通知。代码示例在这里

  • mybatis支持:sumk有自己的sql执行工具:RawUtil和NamedUtil。它们可以执行sql文件中的sql,但不支持if等标签。如果需要更灵活的操作,请使用mybatis。sumk提供了对mybatis的内置支持。

  • redis封装:封装了redis的连接获取与关闭、失败重试、多数据源路由等。

  • 分布式session:只要在redis.properties里配置了session的地址,就实现了分布式session。否则就是单机运行。切换就是这么简单

  • 异常体系:异常处理很考验开发者的基本功。许多应用的异常体系都是一团糟。sumk可以让开发者从异常中解脱出来,开发人员不需要去catch异常,也不需要做太多的校验,比如空指针之类。

  • 线程管理:sumk将应用的线程管理起来,使得系统的线程不至于暴涨,让线程可以更有效的被利用,并提供工具方法,使得开发人员可以很方便的执行异步任务。此外还提供了限流功能,当线程紧张的时候,低优先级的任务会被直接拒绝。

  • 分布式锁:因为许多应用是分布式部署的,需要用到分布式锁。sumk内置了一套分布式锁,只要有redis就可以运行,不需要开发任何额外的代码。它的原理是基于redis的lua脚本。

  • 日志体系:在高并发应用中,接口调用量很高,很难定位日志是哪个请求打印的。sumk将会记录日志所属的用户或访问,便于日志跟踪。并且会提供统一日志扩展,不需要额外使用logstash等日志工具。具体参见这里

  • 测试框架:数据库和微服务的单元测试一向是痛点。sumk提供了测试接口,在测试模式下,所有的数据库操作都会被回滚。它发起的微服务调用,如果被调用方允许被测试,它所做的数据库修改也会被还原。ORM的redis缓存也会被清理,但是手工修改的redis无法被清理。

  • 其它功能:sumk还提供了web的第三方应用登陆、web的多端互踢、拦截器等功能。它的功能远不止上述那些。它是一个百宝箱,如果你掌握了,开发速度将会大大提升

  • 架构图

使用方式:通过maven引入sumk-log、sumk.jar及其依赖包(最新版惨叫maven中央库)。可以通过sumk-log引入,也可以直接引入sumk.jar,sumk-log是可选的。

<dependency>
    <groupId>com.github.youtongluan</groupId>
    <artifactId>sumk-log</artifactId>
    <version>2.2.1</version>
</dependency>

 

sumk的四大模块为:数据库操作、微服务、web请求、IOC。除了sumk-db,其它使用很简单。

数据库操作方面,sumk提供了sumk-db、RawDB(RawDBUtil)、NamedDB(NamedDBUtil)和Mybatis4种方式,以下是代码示例:

    @Box  //@Box表示启用sumkDB的事务管理,类似于spring的@Transaction
    public void test() {
        //sumk-db类似于hibernate,以下是示例
        DemoUser user = new DemoUser();
        user.setAge(30);
        user.setName("张三");
        user.setLastUpdate(new Date());

        DB.insert(user).execute(); //插入对象

        //多条件查询,sumk不好入门的也就只有这个。这个功能是可选的,不用也没关系
        List list=DB.select().tableClass(DemoUser.class)
                .lessThan("lastupdate", new Date())
                .orderByAsc("lastupdate")
                .offset(10)
                .limit(10)
                .queryList();
        //sumk-db例子结束

        // RawDB使用的是原生的sql,后面跟的是要注入的参数。参数个数与sql中的?的个数一致
        RawDB.list("select * from demouser where name=? and age=?", "登陆",12);

        //NamedDB类似于mybatis,目前只支持#{}方式,不支持等标签。
        NamedDB.count("select count(1) from demouser where name=#{name}", SBuilder.map("name", "登陆").toMap());

    }

 

微服务(sumk-soa)代码示例:

/////////////////////////////////////服务器端:
@Soa
public List echo(String echo,List names){
    ............
    return list;
}

//////////////////////// 客户端调用
List names=Arrays.asList("游夏","游侠");
String echo=",how are you";
String result=Rpc.call("groupId.appId.echo", echo,names);  //返回是json格式的List对象

 

sumk-http代码示例:

    @Web 
    public List echo(String echo,List names){
        List list=new ArrayList();
        for(String name:names){
            list.add(echo+" "+name);
        }
        return list;
    }

//客户端就是一般的http请求
//请求路径是http://localhost/intf/rest/echo
//请求实体是data={"echo":"hi","name":["张三","李四"]}

        sumk项目的搭建非常简单,只要app.properties、sumk.jar及其它依赖包,您就自动拥有了架构图中的那些功能。启动方式是调用SumkServer.start()。需要jdk1.8。搭建示例参见文档

使用入门:

           只需要引入sumk包,并添加配置文件app.properties,你就能运行sumk应用了。具体步骤参见sumk框架入门.docx

接口压测:

    运行org.test.Main,在这个类的相同目录下,有HttpPressTest和RpcPressTest两个文件,分别是http和微服务的压测用例。2个用例的压测结果大概都在2万次每秒(根据机器环境的不同而不同)。

联系方式:

  QQ:3205207767

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (19)

加载中
java劝退
2020/07/12 10:49
回复
举报
加油哦
2020/03/20 00:32
回复
举报
放一份到码云上撒
2018/12/03 23:17
回复
举报
打分: 推荐
看起来不错
2018/02/26 18:13
回复
举报
没看出来有什么优势!
2017/10/13 15:22
回复
举报
打分: 较差
没看出来有什么优势!
2017/08/21 12:01
回复
举报
打分: 力荐
该评论暂时无法显示,详情咨询 QQ 群:912889742
游夏-sumk软件作者
打分: 力荐
自从发表了sumk跟其它框架的比较,负面评论就来了。。。
2017/11/27 09:16
回复
举报
项目中的sumk-1.7.6.jar必须引入到项目吗?
2017/08/06 15:08
回复
举报
源码下载运行404怎么回事啊
2017/08/04 10:47
回复
举报
更多评论
发表了资讯
2021/10/31 10:14

sumk 3.1.0 发布,Java 一站式开发框架

sumk是一款类似于spring boot的一站式开发框架,但是它更轻,更适合互联网。因为它设计之初就把数据库读写分离、redis缓存、redis缓存分片、鹰眼跟踪、统一日志等互联网常见功能作为基础特性进行设计。并且它们之间的数据是共享复用的,比如http请求参数会被缓存一份作为http日志中的一部分,这样就不需要二次获取数据,性能更强。 3.x版跟2.x版在rpc协议方面不兼容,所以不能在一个平台内部混合使用。 3.0.0和3.1.0的主要变更内...

0
5
2021/01/14 14:12

互联网框架 sumk2.9.7 发布了

sumk 和 sumk-log 发布到 maven 私库已有 3 年左右了,基本上保持了一月两个版本的频率。框架融合了很多开发常见的需求,并且因为是出自同一人之后,各功能之间衔接很平滑。它的主要功能有 IOC、web 服务(含分布式 session)、微服务、ORM(使用 redis 做实时缓存)、读写分离、分布式锁、自定义插件等。sumk 的功能基本上都支持分布式、故障转移,因为它是为互联网而生的。 以下是最近几个版本的变更日志。 v2.9.0 1、zk 和 ...

0
3
发表于大前端专区
2020/07/11 14:34

互联网一站式框架 sumk 发布 2.8.1 版

sumk 的定位是提供一个类似于 spring boot 的轻量级互联网框架。它的特点是开发速度以及对互联网天然支持,比如分布式 session、数据库读写分离、微服务、可实时更新的redis缓存、分布式锁、统一日志等。在依赖jar的总大小、占用的内存、启动速度这些方面都比spring boot有很大的优势。web服务的性能也比spring mvc高很多。框架还对日志和异常做了统一处理,大大加快了bug定位速度。 本次更新主要是针对http中的文件上传功能,它...

2
18
发表于大前端专区
2019/12/22 23:11

sumk 2.6.5 更新,轻量级互联网框架

sumk 的定位是提供一个类似于 spring boot 的轻量级互联网框架。它的生命线是开发速度和对互联网天然支持,比如分布式 session、数据库读写分离、微服务、数据缓存及刷新等。解决中小企业开发中常见的问题。 本次 sumk、sumk-log、sumk-tool 都进行了升级,并且把版本号升级到 2.0.0。本次更新对配置方式以及 web 接口样式变更比较大。 本次更新的主要内容: ORM的select增加对IS NOT NULL的支持 修改web和rpc拦截器接口的定义 ...

1
7
发表于大前端专区
2019/02/27 19:35

sumk 2.0.0 发布,轻量级互联网框架

sumk 的定位是提供一个类似于 spring boot 的轻量级互联网框架。它的生命线是开发速度和对互联网天然支持,比如分布式 session、数据库读写分离、微服务、数据缓存及刷新等。解决中小企业开发中常见的问题。 本次 sumk、sumk-log、sumk-tool 都进行了升级,并且把版本号升级到 2.0.0。本次更新对配置方式以及 web 接口样式变更比较大。 本次更新的主要内容: web 接口的返回值如果是 byte[] 类型,会将原始 byte[] 返回给客户端...

0
23
发表于大前端专区
2019/01/05 10:32

sumk 1.9.0 发布,轻量级互联网框架

sumk 的定位是提供一个类似于 spring boot 的轻量级互联网框架。它的生命线是开发速度和对互联网天然支持,比如分布式session、数据库读写分离、微服务、数据缓存及刷新等。 本次更新的主要内容: ORM支持数据库分表的功能。比如销量按城市进行分表,划分为销售-北京,销售-上海等。 web框架(网关)支持签名方式自定义,开发者可以引入私钥、证书方式的签名验签,框架默认支持的是md5签名 SumkDate增加了日期加减等操作 整理了...

4
28
发表于大前端专区
2018/12/03 16:03

互联网一站式框架 sumk 发布 1.8.5 版本

sumk 的定位是提供一个类似于 spring boot 的轻量级互联网框架。它的生命线是开发速度和对互联网天然支持,比如分布式session、数据库读写分离、微服务、数据缓存及刷新等。本次更新的主要内容有: 工具化,可以只将sumk作为工具包引入,而不使用它的http、微服务等功能。它的工具方法包括redis封装、分布式锁、SumkDate日期工具等。 简化app.properties配置的自定义流程。本配置是sumk唯一的必须配置。本版本将它的定制进一步简...

4
17
发表于大前端专区
2018/11/18 11:09

互联网一站式框架 sumk 发布 1.8.4 版本

sumk 的定位是提供一个类似于 spring boot 的轻量级互联网框架。它的生命线是开发速度和对互联网天然支持,比如分布式session、数据库读写分离、微服务、数据缓存及刷新等。 本次更新的主要内容: 日期工具类SumkDate,它可以在java8的LocalDateTime、传统的Date对象以及字符串之间互转。对于中国常见的日期格式,不如yyyy-MM-dd HH🇲🇲ss等,它的效率要比java原生日期对象高的多。 优化日期的json序列化和反序列化。在json序列...

3
42
发表于大前端专区
2018/09/04 14:33

互联网一站式框架 sumk 发布 1.8.3 版本

sumk 的定位是提供一个类似于 spring boot 的轻量级互联网框架。它的生命线是开发速度和对互联网天然支持,比如分布式session、数据库读写分离、分布式锁、异常体系等。 本次更新的主要内容: web接口支持http格式。原先的web接口用“intf/webserver?act=接口名”的方式,现在增加支持restful风格。比如接口名为a.b,现在可以写为intf/rest/a/b 通过配置可以移除不需要的bean 微服务的@soa注解添加前缀开关,用于控制...

0
7
发表于大前端专区
2018/07/21 17:58

互联网一站式框架 sumk 发布 1.8.2 更新

sumk的定位是提供一个开发速度快、又能进行横向扩展的高性能框架。sumk的设计思路是简化开发工作,将开发工作变为填空题。通过优化框架来改变系统行为。这样做的好处是代码更容易被管理,也更容易适应变化。 本次更新的主要内容有: 支持redis扩展,并提供JedisSentinelPool的封装 可以通过app.properties配置动态调整微服务的发布与下线 微服务允许一个应用同时使用2个zookeeper注册中心 可以直接通过接口查询所有的微服务接口...

0
7
发表于大前端专区
2018/05/02 09:21

sumk-1.8.1 版更新,简单易用的互联网框架

sumk-1.8.1 发布,sumk 的定位是提供一个垂直版的类似于 spring boot 的互联网框架。它的生命线是开发速度和对互联网业务的支持 本次更新最突出的功能是测试接口。在测试模式下,所有对数据库的操作都是在主库上进行,所有的修改在用例结束后都会被回滚。并且它所调用的rpc或http接口,对数据库的修改也会被回滚。这个功能还有很多不尽人意的地方,比如mongo等nosql操作无法回滚,毕竟微服务模式下的单元测试本来就是一大痛点。...

0
6
发表于大前端专区
2018/02/26 09:16

sumk-1.8.0 发布,快速开发的互联网框架

sumk 是一款为互联网的高并发、多节点而设计的框架,但也支持单机简单使用(redis、zookeeper等功能都不用),也可以只使用 sumk 中的某些模块。它包含了 RPC、Web、ORM、IOC、多数据源、读写分离、redis 自动缓存以及手工使用、安全体系、异常体系、分布式锁等待功能。体系结构庞大,使用简单。 本次更新主要内容: 用异步方式重写微服务部分,并且增加jquery风格的微服务api 发布到maven中央库,方便大家使用...

1
8
发表了资讯
2017/10/23 09:44

sumk 1.7.9 版发布,快速开发的互联网框架

使用sumk框架,你将很容易搭建服务器端应用。而且不需要关心接口交互(包括rpc和http)、数据库访问、加解密、异常处理、redis连接等,还能减少sql编写数量,使开发者能够专注于业务代码编写,大大提升开发效率。它将大幅度降低软件架构的门槛。 changelog: rpc异步调用的api丰富了很多,异常处理也友好了很多。一个rpc请求被分为2个阶段,发送请求阶段和等待请求返回阶段。根据这个,rpc请求实际上有3种类型:阻塞到rpc请求返...

0
12
发表了资讯
2017/08/21 10:38

极速开发框架 sumk 1.7.8 发布

sumk的特点跟spring boot有些类似,追求的是追求的是极速编程与高性能扩展的结合。但是sumk的配置更简单、开发更快、连启动速度都比spring boot快很多(尤其是在调试阶段,会省很多时间)。 总体而言,sumk比spring boot更轻量级,当然了,功能上不会有spring boot丰富。但常用功能大多囊括了。 本次更新主要内容: @Web增加默认的异常code和异常message,这对优化用户体验很有帮助 NamedDB、RawDB保留大小写,不再强制转化为小...

9
33
发表了资讯
2017/06/26 15:02

sumk-1.7.7 版发布,开发速度非常快的服务器端框架  

使用sumk框架,你将很容易搭建服务器端应用。而且不需要关心接口交互(包括rpc和http)、数据库访问、加解密、异常处理、redis连接等,还能减少sql编写数量,使开发者能够专注于业务代码编写,大大提升开发效率。它将大幅度降低软件架构的门槛。 changelog: ORM的update方法支持数字增减,避免开发人员将数字取出再做加减,从而造成并发情况下的数据不一致。后期还将通过将字段声明为不可变、只能加减等方式,避免被小白误操作...

5
37
发表了资讯
2017/05/31 10:09

sumk-1.7.6 发布,开发速度非常快的服务器端框架

使用sumk框架,你不需要关心接口交互(包括rpc和http)、数据库访问、加解密、异常处理、redis连接等,并且大大减少sql编写数量,使开发者能够专注于业务代码编写,大大提升开发效率。有了sumk,架构师的门槛大大降低。 与spring生态相比,sumk的做法就是舍去低频应用,使得常用功能能够做得更好,使用更简单。相对spring来说,sumk无论是搭建、开发速度、项目启动速度等,都有了很大提升。与jFinal等web框架相比,sumk既拥有它...

3
57
发表了资讯
2017/05/15 10:01

sumk 1.7.4 更新,开发速度非常快的服务器端框架

使用sumk框架,你不需要关心接口交互(包括rpc和http)、数据库访问、加解密、异常处理、redis连接等,并且大大减少sql编写数量,使开发者能够专注于业务代码编写,大大提升开发效率。 changelog: 对开放平台的支持,就是将接口提供给第三方平台调用的那种 rpc请求增加参数校验机制 完善http的拦截器机制 如果rpc请求的接口不存在,快速失败并提示接口不存在 http功能中去掉@Login,使用@Bean代替@Login,减少开发人员要掌握的...

3
35
发表了资讯
2017/04/17 09:49

sumk-1.7.3发布,增加用户多处登陆自动下线功能

sumk是一款为互联网的高并发、多节点而设计的框架,但也支持单机简单使用(redis、zookeeper等功能都不用),也可以只使用sumk中的某些模块。它包含了RPC、Web、ORM、IOC、多数据源、读写分离、redis自动缓存以及手工使用、安全体系、异常体系、分布式锁等待功能。体系结构庞大,使用简单。 在一个任意的public方法上,加@Web注解,就具备了Web功能;加@Soa注解,就具备了RPC功能;加@Box功能,就具备了事务功能。对方法的出入参...

0
30
发表了资讯
2017/04/10 09:43

sumk 1.7.2 发布,移动互联网版 SSH 框架

sumk 1.7.2 发布了,更新如下: 异步rpc调用 rpc支持设置整个实例的路由权重以及某个api的路由权重 rpc的在线测试功能(将所有的请求,暂时导向本实例) rpc的备机功能,仅在所有的rpc服务宕机的情况下,才使用 rpc调用链路的跟踪 rpc协议的压缩 rpc的锁优化 数据库事务增加READONLY方式,防止菜鸟在一个本该是只读的事务,进行了写操作。有助于快速排查问题 权重、备机等rpc设置,参见sumk项目的说明文档...

1
10
发表了资讯
2017/03/13 09:20

sumk 1.7.1 版发布,移动互联网版 SSH 框架

sumk 1.7.1 版发布了,更新内容: 微服务的熔断机制及热拔插 http请求的参数校验功能 启动rpc服务器的时候,如果启动失败,会重试2分钟 http的session对象,改为继承自SessionObject,这是为了以后在记录日志的时候,能够记录该日志属于哪个用户的操作 ORM增加批量插入的功能 性能优化及一些细节改进 在日志中打印所有的http接口信息,便于生成接口文档 IOC框架自定义注入方式。比如应用会连接多个mongo库,可以采用这种方式选择...

3
15
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2019/02/10 20:03

sumk-data的主要方法及注解

# sumk-data使用介绍 sumk-db的原生入口类有DB(ORM)、SDB(执行xml中的sql)。同时也支持mybatis等外置数据访问框架。这里主要介绍的是DB和SDB的使用。 ## ORM的公共特性 * 条件中字段名大小写不敏感 * 字段名:ORM用的是java字段。SDB用的是原生数据库字段 * **条件参数如果是pojo,里面的null会被省略。如果是map,里面的null也会作为条件** * failIfPropertyNotMapped这个其实是代码检查,为了防止开发人员写错map中的key...

0
0
2016/11/03 13:39

DataWorks 安装手册

# DataWorks 安装手册 tags: gsac --- [TOC] ## 1. 环境介绍 >系统 : CentOS release 6.8 (Final) _x64 >集成工具 : xampp 1.8.1 (包含 mysql 5.5.27, proFtp) >软件 : DataWorks-SW >jdk : java version "1.7.0_111" ## 2. 安装软件 在 `DataWorks-SW` 压缩包中,存在安装说明,以下的安装步骤就是根据安装说明来的,如果需要了解更详细的安装说明,请阅读 `README_Dataworks_Installation_Operation` 文件。 ### 2.1 创建数...

0
0
发表了博客
2018/08/24 22:30

牛客网练习赛25 C 再编号

链接:https://www.nowcoder.com/acm/contest/158/C 来源:牛客网 定义对 a 的再编号为 a' ,满足 。 现在有 m 次询问,每次给定 x,t ,表示询问经过 t 次再编号后第 x 个人的编号。 由于答案可能很大,所以对 109+7 取模。 输入描述: 第一行 2 个数 n,m ,表示人数和询问次数; 接下来一行 n 个数,表示 ai; 接下来 m 行,每行 2 个数 x,t ,描述一次询问。 输出描述: m 行,第 i 行 1 个数表示第 i 次询问的答案对 109+7取模的...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
19 评论
409 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部