Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Yonagi04/Ocean

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

129 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ocean

Ocean 是一个基于 Java 的高性能服务器实现,利用 JDK21 的虚拟线程新特性,整体设计与功能参考 Nginx,目标是在 Java 生态中提供一个轻量、可扩展、易配置的服务器 / 网关解决方案。

Ocean 适用于以下场景:

  • HTTP / HTTPS 服务端

  • 反向代理与负载均衡

  • 轻量级 API 网关

  • 静态资源服务

  • 对 Java 新特性(虚拟线程)感兴趣的学习与实践项

功能

  • HTTP 请求解析与响应,还支持 HTTPS、HSTS、CORS 和 GZIP 压缩等常见 Web 功能
  • 支持文件的上传与下载功能
  • 基本的反向代理与负载均衡,支持多种负载均衡算法,还支持面向后端服务集群的简单灰度发布功能
  • 基于配置中心的动态配置更新,几乎所有的服务器配置都可以通过配置中心实现动态配置,支持 Nacos 和 Apollo。 支持定时备份配置到服务端本地
  • 支持端侧本地缓存与HTTP缓存,提升静态资源访问性能。端侧本地缓存支持多种缓存策略
  • 支持请求限流和熔断机制
  • 支持简单的控制台、数据大盘功能,以及 health 和 metrics 功能
  • 更多功能等你来看……clone下代码一看便知(其实是写README的时候实在忘的差不多了)

运行要求

  • JDK 17 或更高版本,强烈推荐使用 JDK 21。更低版本 JDK 不保证运行兼容性
  • Maven 3.6 或更高版本
  • 如果使用配置中心功能,还需要一个 Nacos 或 Apollo 实例。对于使用 Nacos 的用户,需要在 server.properties 中正确配置连接信息; 对于使用 Apollo 的用户,需要修改 resources/META—INF 中的连接信息,或使用环境变量。具体参考以下文档:https://www.apolloconfig.com/#/en/client/java-sdk-user-guide

运行

拉取项目到本地后,自行修改 resources 目录下的 server.properties 中的服务器配置,运行 Main.java 中的 main 方法即可运行

注意:如果使用 JDK 21 以下版本的 JDK,务必将 server.properties 中的 server.thread.virtual_threads_enabled 配置项设置为 false

打包

运行以下命令将项目打包成一个可执行的 JAR 文件:

mvn clean package

打包完成后,生成的 JAR 文件位于 target 目录下,直接运行就可以启动

java -jar target/ocean-1.0-SNAPSHOT.jar

部署

最常见的场景就是部署前端资源,比如各种网站。只需要把打包好的前端资源放在根目录下的 www 目录,启动服务器后访问 http://localhost:8080 就可以看到网站了

当然,端口号、资源目录都可以在 server.properties 中修改

License

MIT

About

Ocean is a high-performance server implementation based on Java. It leverages the new virtual thread features of JDK21 and its overall design and functionality are based on Nginx. Its goal is to provide a lightweight, scalable, and easy-to-configure server/gateway solution

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors