loli-core

a simple micro service framework written in kotlin

License

License

Categories

Categories

Net
GroupId

GroupId

net.easy3w
ArtifactId

ArtifactId

loli-core
Last Version

Last Version

0.2
Release Date

Release Date

Type

Type

jar
Description

Description

loli-core
a simple micro service framework written in kotlin
Project URL

Project URL

http://github.com/goodzzp/loli
Source Code Management

Source Code Management

http://github.com/goodzzp/loli/tree/master

Download loli-core

How to add to project

<!-- https://jarcasting.com/artifacts/net.easy3w/loli-core/ -->
<dependency>
    <groupId>net.easy3w</groupId>
    <artifactId>loli-core</artifactId>
    <version>0.2</version>
</dependency>
// https://jarcasting.com/artifacts/net.easy3w/loli-core/
implementation 'net.easy3w:loli-core:0.2'
// https://jarcasting.com/artifacts/net.easy3w/loli-core/
implementation ("net.easy3w:loli-core:0.2")
'net.easy3w:loli-core:jar:0.2'
<dependency org="net.easy3w" name="loli-core" rev="0.2">
  <artifact name="loli-core" type="jar" />
</dependency>
@Grapes(
@Grab(group='net.easy3w', module='loli-core', version='0.2')
)
libraryDependencies += "net.easy3w" % "loli-core" % "0.2"
[net.easy3w/loli-core "0.2"]

Dependencies

compile (7)

Group / Artifact Type Version
org.apache.commons : commons-lang3 jar 3.8.1
org.slf4j : slf4j-api jar 1.7.26
com.github.salomonbrys.kotson : kotson jar 2.5.0
org.jetbrains.kotlin : kotlin-reflect jar 1.3.41
io.ktor : ktor-server-netty jar 1.1.4
io.ktor : ktor-client-apache jar 1.1.4
org.reflections : reflections jar 0.9.11

runtime (1)

Group / Artifact Type Version
org.jetbrains.kotlin : kotlin-stdlib-jdk8 jar 1.3.41

test (2)

Group / Artifact Type Version
junit : junit jar 4.12
org.slf4j : slf4j-simple jar 1.7.26

Project Modules

There are no modules declared in this project.

Loli:基于kotlin的基础微服务构架

1、快速使用

  1. 建立一个kotlin项目,引用loli-core,参考(build.gradle):
dependencies {
    compile "net.easy3w:loli-core:0.2"
}
  1. 建立一个kt文件,写入如下内容:
@RpcExport("Add", "加法器")
@RpcAuth(false)
class Add : AbsRpc() {
    @RpcExport(desc = "计算加法")
    fun add(
        @RpcDesc("第一个参数") a: Int,
        @RpcDesc("第二个参数") b: Int
    ) = a + b
}

fun main() {
    // 注册rpc对外类
    RpcCall.register(Add::class)

    // 配置
    val conf = RpcConf("test", "测试", "127.0.0.1", 8000)

    // 启动服务
    StartRpcJson().start(conf)
}

最后启动main函数,在浏览器中输入:http://127.0.0.1:8000/explain

看到如下的界面:

服务定义页面

点击类名,看到类定义页面为:

类定义页面

点击方法名,看到方法定义页面为:

方法定义页面

方法定义页面

点击最下面的【测试Json】按钮,就能看到rpc服务的调用结果:

方法定义页面

简单说明

  1. 服务启动后,会在指定host和port启动一个http的服务
  2. 外界通过http的post模式发送json请求给本服务
  3. 服务解析json请求,找到对应的方法并调用
  4. 服务返回方法的调用结果给用户(json)

10、性能测试结果

性能测试结果
设备:8核,32G,centos7
2台设备,1台部署1个srv,1台部署1个api

1、api+srv 2层组合
测试命令:ab -n 1000000 -c 10000 -p post -T "application/json" http://127.0.0.1:9900/
QPS:8k
测试命令:ab -n 1000000 -c 10000 -p post -T "application/json" -k http://127.0.0.1:9900/
QPS:11k
这里-k表示keep-alive。

2、单独srv层
测试命令:ab -n 1000000 -c 10000 -p post -T "application/json" http://127.0.0.1:9900/
QPS:18k
测试命令:ab -n 1000000 -c 10000 -p post -T "application/json" -k http://127.0.0.1:9900/
QPS:80k
这里-k表示keep-alive。 

Versions

Version
0.2