+1. Linkis is an interesting project that builds a unified layer to decouple the upper layer computation/application and under layer data engines, such as Spark, Presto, Flink, etc. Also it looks already build a community around the project. Good luck!
Shuai Di <shuaidi1...@163.com>于2021年7月12日 周一上午11:13写道: > Greetings! > > > We would like to start an open discussion on bringing Linkis ( > https://github.com/WeBankFinTech/Linkis), a computation middleware > project, to the Apache Incubator. > The proposal can be found below and is also listed in the Incubator wiki: > https://cwiki.apache.org/confluence/display/INCUBATOR/LinkisProposal, > thanks @Junping Du for creating the page! > We appreciate anyone who would give guidance or be willing to support us a > an additional mentor. > ====== > Linkis Proposal > > > =Abstract= > Linkis builds a computation middleware layer to decouple the upper > applications and the underlying data engines, provides standardized > interfaces (REST, JDBC, WebSocket etc.) to easily connect to various > underlying engines (Spark, Presto, Flink, etc.), while enables cross engine > context sharing, unified job& engine governance and orchestration. > Linkis codebase: https://github.com/WeBankFinTech/Linkis > > > =Proposal= > Linkis is designed to solve computation governance problems in complex > distributed environments (typically in a big data platform), where you have > to deal with different types, versions, or clusters of underlying data > engines and hundreds of diversified engine clients at the upper application > layer as well. > Linkis acts as a proxy between the upper applications layer and underlying > engines layer. By abstracting and implementing the 3 common phases of a > job/request for submit, prepare and execute, Linkis is able to facilitate > the connectivity, governance and orchestration capabilities of different > kind of engines like OLAP, OLTP (developing), Streaming, and handle all > these "computation governance" affairs in a standardized reusable way. > We are actively operating the Linkis community and we are looking forward > to increase community activity continuously.We propose to contribute the > Linkis codebase to the Apache Software Foundation. We believe that bringing > Linkis into Apache Software Foundation and following the COMMUNITY-LED > DEVELOPMENT "APACHE WAY" could continuously improve project quality and > community vitality. > > > =Background= > In today's complex and distributed environment, the communication, > coordination and governance of application services have developed mature > solutions from SOA to micro-services, and many practices from ESB to > Service Mesh to decouple different services. > However, things go different while an application service needs to > communicate with the underlying engines. Engines are isolated from each > other, and the client-server tight coupling pattern goes everywhere. Each > and every upper application has to directly connect to and access various > underlying engines in a tightly coupled way, and solves the "computation > governance" problems on its own, including maintaining different client > environments, submiting the job, monitoring job status, fetching the > output, handling large number of concurrent client instances, watching the > bad jobs, adapt to engine version changes, etc. > It lacks a common layer of "computation middleware" between the numerous > upper-layer applications and the countless underlying engines to handle all > these "computation governance" affairs in a standardized reusable way, > that's why we started the Linkis project. > Firstly, Linkis could reduce the complexity of connectivity. Instead of > maintaining a variety of engine client environments, users now only need to > install the Linkis client, or even just HTTP client while using the REST > interface. Routing query to desired clusters could be done by simply > providing a tag. > Secondly, Links provides governance capabilities such as multi-tenancy, > concurrency control, resource management, query validation, privilege > enhancement and auditing. > Meanwhile, Linkis enables orchestration strategies such as routing, > load-balance, active-active and hybrid computation across engines (some > still under development). > > > =Rationale= > Linkis is built on distributed microservice architecture with great > scalability and extendibility. The enhancements of high concurrency and > fault tolerance make it more stable and reliable. It has already supported > many production environments with large number of daily jobs over a long > term. > Linkis's microservices are divided into 3 groups: Computation Governance > Services, Public Enhancement Services, and Microservice Governance Services. > Computation Governance Services(CGS) group is responsible for the core > process of job/request submission, preparation and execution, lifecycle > management, resource management, validation and orchestration. > Public enhancement Services(PES) group provides basic public functions > including job context sharing, material management and data source > management, to serve other Linkis services and upper application systems. > Microservice Governance Services(MGS) group includes customized Spring > Cloud Gateway, Eureka and Open Feign, to provide basic functions like > routing, service registration and discovery, and RPC framework. > By providing capabilities of multi-tenant, high concurrency, job > dispatching/management policies, unified resource control and > orchestration, Linkis makes the submission, preparation and execution of > computation jobs more flexible, reliable and controllable, and successfully > return the results. It could greatly reduce the overall development, > operation and maintenance costs, and the architecture complexity. > Based on Linkis the computation middleware, new upper layer applications > could be quickly developed by reusing the Linkis computation governance > functions, as what’s done in the open source big data platform suite > “WeDataSphere” (https://github.com/WeBankFinTech/WeDataSphere). > Linkis currently mainly supports OLAP and Streaming engines, and we are > planning to support OLTP engines better. Containerization is also one of > the important development directions of Linkis. > > > =Initial Goal= > - Migrate the existing codebase, website, and documentation to > Apache-hosted infrastructure. > - Work with the infrastructure team to implement and approve our code > review, build, and testing workflows in the context of the ASF. > - Incremental development and release under Apache guidelines. > - Grow and diversify the Linkis community in the Apache Way. > > > =Current Status= > ==Meritocracy== > Linkis project was started at WeBank and has been an open-source project > on GitHub since July 2019. Linkis has been quickly adopted by many > organizations, more than 500 organizations have tested Linkis based on our > sandbox application records, dozens of them have introduced Linkis into > production based on the users’ spontaneous feedbacks, distributed in > various industries including banking, telecommunications, insurance, > manufacturing, education, internet, etc. > Linkis already has contributors and users from different companies. We’ve > set up the Committer team and we’re constantly seeking for potential new > committer. New Contributors are always highly welcomed and guided by > existed committers. Users could get timely support from community IM groups > and GitHub. > > > ==Community== > Linkis now has 15 committers from 6 companies including WeBank, China > Telecom, Kanzhun Ltd., iQIYI Inc., HONOR Mobile Phone, and Samoyed Digital. > We have a developer IM group for more than 100 people from different > organizations, and 9 user IM groups for more than 4,500 people. > > > ==Core Developers== > The core developers of Linkis are working in the big data team of > different companies, mainly in WeBank since the project was initiated there. > - Shuai Di (WeBank) > - Qiang Yin (WeBank) > - Heping Wang (WeBank) > - Yongkun Yang (WeBank) > - Zhiyue Yang (WeBank) > - You Liu (WeBank) > - XiaoGang Wang (China Telecom) > - Hui Zhu (Kanzhun) > - Zheng Wang (iQiyi) > - Rong Zhang (Honor) > > > ==Releases== > Linkis has released multiple versions as listed here: > https://github.com/WeBankFinTech/Linkis/releases > We will follow the ASF guidelines more closely, and adopt the ASF source > release process upon joining the incubator. > > > ==Code Reviews== > Linkis’s code reviews are currently public on Github: > https://github.com/WeBankFinTech/Linkis/pulls . > > > ==Alignment== > As Linkis was built to address connectivity and other computation > governance issues with various underlying engines, it depends on multiple > ASF projects such as Spark, Flink, Hive and Hadoop. Linkis’s Engine > Connector Manager service will start different Engine Connectors to connect > to different underlying engines, providing computation governance abilities > which benefits the usage and maintenance of these engines. Linkis will > continue to expand the types of engines it supports in ASF projects, such > as HBase, Kylin, and more. > > > =Known Risks= > ==Orphaned Products== > The risk of Linkis becoming an orphan product is very low, because it’s > already been the core infrastructure component in the production > environments of dozens of companies' big data platforms, including large > companies like WeBank, China Telecom, Ping An Insurance Company, Hikvision, > etc. Hundreds of thousands of computation jobs are performed through Linkis > in these companies everyday. Developers from these companies are > increasingly joining the Linkis community as contributors. > Linkis has 12 major releases so far, and received 355 PRs from > contributors, which indicates the activity and vitality of the Linkis > community. Linkis is also the core component of the open source big data > platform suite “WeDataSphere”, even more users and developers are already > active in this larger community. > We are looking forward to further expand and diversify the community by > joining Apache. We are also further improving the adherence to the > Community-Led development pattern, and the standardization and transparency > of community governance. > > > ==Inexperience with Open Source== > Linkis’s core developers have been running Linkis as a community-oriented > open source project for a period of time, some of them already have > experience working with other open source communities. The current Linkis > user group scale of more than 4500 people is also a proof of our commitment > and passion for operating the open source community. > Meanwhile, we’ve begun to refine our community governance efforts under > the guidance of Apache mentors, and we’ll learn more about how to operate > the open source community effectively and properly by following the Apache > way in our incubator journey. > > > ==Homogenous Developers== > Most of the current core developers work at WeBank where the Linkis > project started. We also had developers from China Telecom, Kanzhun, iQiyi > and Honor Mobile Phone elected to the committer group, and already have led > the release of several versions of Linkis. Samoyed Digital has the latest > nominated committer because of their solid contributions to Linkis data > source management module. > Though Linkis community may not be diverse enough yet, we are constantly > looking for new contributors and potential committers to enhance the > diversity of the community and the vitality of the project. > > > ==An Excessive Fascination with the Apache Brand== > We acknowledge that the Apache brand would add a lot of value and > reputation to Linkis, and will benefit the cooperation and promotion at the > global scale. However, our primary purpose is to build a more diverse and > viable community and to gain stability for long-term development as > submitting Linkis to Apache. We will also strictly follow the ASF's rules > and policies under the guidance of the Incubator PMC. > > > =Documentation= > Documentation about Linkis can be found at > https://github.com/WeBankFinTech/Linkis-Doc . Following links provide > more information: > - Codebase at Github: https://github.com/WeBankFinTech/Linkis > - Issue Tracking: https://github.com/WeBankFinTech/Linkis/issues > - Releases: https://github.com/WeBankFinTech/Linkis/releases > =Initial Source= > https://github.com/WeBankFinTech/Linkis > > > =External Dependencies= > Back-end: > | Dependencies |License|Comment| > |caffeine|Apache 2.0| > | cglib | Apache 2.0 | > | commons-beanutils | Apache 2.0 | > | commons-codec | Apache 2.0 | > | commons-collections | Apache 2.0 | > | commons-dbcp | Apache 2.0 | > | commons-exec | Apache 2.0 | > | commons-io | Apache 2.0 | > | commons-lang3 | Apache 2.0 | > | commons-math3 | Apache 2.0 | > | commons-net | Apache 2.0 | > | commons-text | Apache 2.0 | > | dozer-core | Apache 2.0 | > | druid | Apache 2.0 | > | fastjson | Apache 2.0 | > | gson | Apache 2.0 | > | guava | Apache 2.0 | > | hadoop-auth | Apache 2.0 | > | hadoop-client | Apache 2.0 | > | hadoop-common | Apache 2.0 | > | hadoop-hdfs | Apache 2.0 | > | hadoop-yarn-client | Apache 2.0 | > > | hive-common | Apache 2.0 | > | hive-exec | Apache 2.0 | > | hive-jdbc | Apache 2.0 | > | httpclient | Apache 2.0 | > | httpmime | Apache 2.0 | > | jackson-annotations | Apache 2.0 | > | jackson-databind | Apache 2.0 | > | jackson-module-scala | Apache 2.0 | > | javacsv | LGPL | > | jaxrs-ri | CDDL, GPL 1.1 | will remove | > | jersey-container-servlet | CDDL, GPL 1.1 | will remove | > | jersey-container-servlet-core | CDDL, GPL 1.1 | will remove | > | jersey-entity-filtering | CDDL, GPL 1.1 | will remove | > | jersey-json | CDDL, GPL 1.1 | will remove | > | jersey-media-json-jackson | CDDL, GPL 1.1 | will remove | > | jersey-media-multipart | CDDL, GPL 1.1 | will remove | > | jersey-server | CDDL, GPL 1.1 | will remove | > | jersey-servlet | CDDL, GPL 1.1 | will remove | > | jersey-spring3 | CDDL, GPL 1.1 | will remove | > | jetty-server | Apache 2.0, EPL 1.0 | > | jetty-webapp | Apache 2.0, EPL 1.0 | > | json4s-jackson | Apache 2.0 | > | jsp-api | CDDL, GPL 2.0 | will remove | > | junit | EPL 1.0 | > | libthrift | Apache 2.0 | > | log4j-1.2-api | Apache 2.0 | > | log4j-api | Apache 2.0 | > | log4j-core | Apache 2.0 | > | log4j-slf4j-impl | Apache 2.0 | > | mockito-all | MIT | > | mybatis-plus-boot-starter | Apache 2.0 | > | mysql-connector-java | GPL 2.0 | will remove | > | netty-all | Apache 2.0 | > | pagehelper | MIT | > | poi-ooxml | Apache 2.0 | > | protostuff-api | Apache 2.0 | > | protostuff-core | Apache 2.0 | > | protostuff-runtime | Apache 2.0 | > | py4j | BSD 2-clause | > | reactor-netty | Apache 2.0 | > | reflections | BSD 2-clause | > | scalacheck | BSD 3-clause | > | scalacheck-shapeless | Apache 2.0 | > | scala-compiler | Apache 2.0 | > | scala-library | Apache 2.0 | > | scalamock-scalatest-support | MIT | > | scalap | Apache 2.0 | > | scala-reflect | Apache 2.0 | > | scalatest | Apache 2.0 | > | slf4j-api | MIT | > | spark-core | Apache 2.0 | > | spark-hive | Apache 2.0 | > | spark-repl | Apache 2.0 | > | spark-sql | Apache 2.0 | > | spark-testing-base | Apache 2.0 | > | spoiwo | MIT | > | spring-boot | Apache 2.0 | > | spring-boot-actuator-autoconfigure | Apache 2.0 | > | spring-boot-starter | Apache 2.0 | > | spring-boot-starter-actuator | Apache 2.0 | > | spring-boot-starter-aop | Apache 2.0 | > | spring-boot-starter-cache | Apache 2.0 | > | spring-boot-starter-jetty | Apache 2.0 | > | spring-boot-starter-log4j2 | Apache 2.0 | > | spring-boot-starter-quartz | Apache 2.0 | > | spring-boot-starter-reactor-netty | Apache 2.0 | > | spring-boot-starter-web | Apache 2.0 | > | spring-cloud-commons | Apache 2.0 | > | spring-cloud-config-client | Apache 2.0 | > | spring-cloud-context | Apache 2.0 | > | spring-cloud-gateway-core | Apache 2.0 | > | spring-cloud-starter | Apache 2.0 | > | spring-cloud-starter-config | Apache 2.0 | > | spring-cloud-starter-gateway | Apache 2.0 | > | spring-cloud-starter-netflix-eureka-client | Apache 2.0 | > | spring-cloud-starter-netflix-eureka-server | Apache 2.0 | > | spring-cloud-starter-openfeign | Apache 2.0 | > | spring-core | Apache 2.0 | > | spring-jdbc | Apache 2.0 | > | spring-security-crypto | Apache 2.0 | > | spring-test | Apache 2.0 | > | spring-tx | Apache 2.0 | > | spring-web | Apache 2.0 | > | websocket-client | Apache 2.0, EPL 1.0 | > | websocket-server | Apache 2.0, EPL 1.0 | > | xlsx-streamer | Apache 2.0 | > > | xstream | BSD 3-clause | > > > Front-end: > |Dependencies|License|Comment| > | axios | MIT | > | highlight.js | BSD-3-Clause | > | iview | MIT | > > | lodash | MIT | > | moment | MIT | > | monaco-editor | MIT | > | sql-formatter | MIT | > | svgo | MIT | > | vue | MIT | > | vue-i18n | MIT | > | vue-router | MIT | > | vuedraggable | MIT | > | vuescroll | MIT | > > =Required Resources= > ==Mailing List== > Currently Linkis has no mailing list. The usual mailing lists are expected > to be set up when entering incubation: > - private@linkis.incubator.apache.orgfor PPMC discussions; > - d...@linkis.incubator.apache.org for development discussions; > - notificat...@linkis.incubator.apache.org for user notifications, and > notifications from GitHub. > > ==Git Repositories== > Upon entering incubation, we request to move the existing repository from > https://github.com/WeBankFinTech/Linkis to Apache infrastructure like > https://github.com/apache/Incubator-Linkis. > > ==Issue Tracking== > The Linkis community would like to continue using GitHub Issues if > possible. > > ==Other Resources== > Apache Jenkins > > =Source and Intellectual Property Submission Plan= > Most of the current code is Apache 2.0 licensed and the copyright is > assigned to WeBank. If the project enters incubator, WeBank will transfer > the source code & trademark ownership to ASF via a Software Grant Agreement. > > > > =Initial Committers= > - Shuai Di (shuaidi1...@163.com) > - Qiang Yin (690574...@qq.com) > - Heping Wang (374126...@qq.com) > - Yongkun Yang (wimkun...@gmail.com) > - Zhiyue Yang (904666...@qq.com) > - You Liu (405240...@qq.com) > - Deyi Hua (david_hua1...@hotmail.com) > - Le Bai (120190...@qq.com) > - Xiaogang Wang (913546...@qq.com) > - Hui Zhu (46580...@qq.com) > - Zhen Wang (643348...@qq.com) > - Rong Zhang (693404...@qq.com) > - Xiaohua Yi (405078...@qq.com) > - Ke Zhou (zhouke...@vip.qq.com) > - Jian Xie (xj...@163.com) > > =Affiliations= > Shuai Di, Qiang Yin, Heping Wang, Yongkun Yang, Zhiyue Yang, You Liu, Deyi > Hua, Le Bai, Ke Zhou and Jian Xie of the initial committers are employees > of WeBank. > Xiaogang Wang of the initial committers is an employee of China Telecom. > Hui Zhu of the initial committers is an employee of Kanzhun. > Zhen Wang of the initial committers is an employee of iQiyi. > Rong Zhang of the initial committers is an employee of HONOR Mobile Phone. > Xiaohua Yi of the initial committers is an employee of Samoyed Digital. > > =Sponsors= > ==Champion== > Junping_Du (ASF Member, IPMC Member), junping...@apache.org > > ==Nominated Mentors== > Shao Feng Shi (ASF Member, IPMC Member), shaofeng...@apache.org > Duo Zhang (ASF Member, IPMC Member), zhang...@apache.org > Jerry Shao (ASF Member, IPMC Member), js...@apache.org > Lidong Dai (IPMC Member), lidong...@apache.org > > =Sponsoring Entity= > We request the Apache Incubator to sponsor this project. > ====== > Best Regards, > Shuai Di