golang-open-source-projects

in #open6 years ago

I have seen the awesome-go project and summarized a lot of go open source projects. But the awesome-go collection is too complete, and each item is not described in detail. Therefore, I have carefully selected more than 100 open source projects based on the information provided by the Go language Chinese community and the common component categories in the Internet enterprise architecture design (the project is not limited to the open source project in Github), and is divided into the following dozens. class. This project can be understood as the Chinese version of awesome-go created by Internet IT people. The original intention of this project is to help those who want to learn and learn from excellent golang open source projects, and who are looking for the right wheels when designing the Internet architecture.

TODO
Check regularly if the url is invalid, check the number of stars, rearrange
Provide related technical articles
table of Contents
surveillance system
Container technology
PaaS tool
Big Data
Microservice
CI/CD
Database Technology
Storage technology
Distributed Systems
Message system
Server management
Security tool
Network tool
Web tool
Web framework
Blockchain technology
other
surveillance system
project Introduction
OpenFalcon OpenFalcon is a Xiaomi open source monitoring system. Function: Data collection free configuration: agent self-discovery, support Plugin, active push mode; capacity level expansion: production environment 500,000 times per second data collection, alarm, storage, mapping, sustainable horizontal expansion. Self-discovery of the alarm policy: Web interface, support policy template, template inheritance and coverage, multiple alarm modes, and support callback actions. User-friendly alarm settings: support the maximum number of alarms, alarm level setting, alarm recovery notification, alarm pause, different thresholds in different time periods, support maintenance period, and support alarm consolidation. Efficient query of historical data: seconds return the historical data of hundreds of indicators for one year. Dashboard user-friendly: multi-dimensional data display, user-defined Dashboard and other functions. Highly usable architecture design: The whole system has no core single point, easy to operate and easy to deploy.
Banshee Monitoring system for periodic indicators.
Kapacitor Kapacitor is an open source framework for processing, monitoring, and alerting time series data.
Pome Pome means Postgres Metrics. Pome is a PostgreSQL indicator instrument that tracks the health of your database.
Pingd Pingd is the world's simplest monitoring service, written in golang. The software supports IPv6, but the server does not support it. pingd allows you to ping thousands of IPs at the same time, during which you can also manage monitored hosts. The user provides the host name or IP, as well as the user's email address, and can use 3 generated URLs to open, stop or delete your tracking. Notifications are also sent whenever your server is down or online, and contains control URLs.
Actiontech zabbix mysql monitor Percona monitoring plugins The Go language version of zabbix is ​​an open source MySQL monitoring plug-in and template from Arcelor. It integrates hundreds of performance monitoring metrics, supports Low Level Discovery auto-discovery multi-instance environment, and supports performance_schema.
Rtop Top is a simple agentless remote server monitoring tool that works based on SSH connections. There is no need to install any software on the monitored server. Rtop connects directly to the server to be monitored via SSH and then executes commands to collect monitoring data. Rtop automatically updates monitoring data every few seconds, similar to other *top commands
Prometheus Prometheus is an open source service monitoring system and time series database that provides monitoring data storage, display, alarm and more.
Bosun Professional cross-platform open source system monitoring project, go language writing, flexible templates and expressions, and various collectors can monitor any application or system level operational data, which is lighter, easier to use and more customizable than zabbix.
Urlooker Monitor web service availability and access quality, written in go language, easy to install and secondary development. Support features: return status code detection; page response time detection; page keyword matching detection; with cookie access; agent multi-room deployment, designation Computer room access; test results support push to open-falcon; support SMS and email alerts
Satellite A tool/library for monitoring the health of kubernetes. It features: lightweight periodic testing, high availability and flexible network partitioning, no single point of failure, and storage of monitoring data in a time series format.
Checkup A distributed, lock-free site health check tool. Support for checking the status of http, tcp, dns, etc. and saving the result in s3. Comes with a beautiful interface.
Zabbixctl Zabbixctl is a command-line tool that uses the Zabbix service API, which provides an efficient way to query and process trigger status, host up-to-date data, and user groups.
Cloudinsight-agent A monitoring client that provides visual monitoring of the saas platform cloudinsight open source. The Cloudinsight probe collects various metrics for its operating system and sends it to the Cloudinsight backend service.
Owl OWL is an open source distributed monitoring system launched by TalkingData, the demonstration environment http://54.223.127.87/, login password password demo/demo
SmartPing SmartPing is a mutual PING detection tool between machines (points), supporting mutual PING, one-way PING, drawing topology and alarm function. The system is designed to be centerless. All data is stored in its own point. The default data loop is reserved for 1 month. The state of the PING packet is drawn from the data of its own point. The data of each other point is drawn into the state of the PING packet. And the API interface obtains other point data to draw the overall PING topology map, and there is an alarm function in the topology map.
Container technology
project Introduction
Pouch Pouch is Alibaba's open source container engine technology. Its main functions include basic container management capabilities, secure and stable strong container isolation, and rich container technology that is non-invasive to applications.
SwarmKit SwarmKit is Docker's open source Docker cluster management and container orchestration tool. Its main functions include node discovery, raft-based consistency and task scheduling.
DaoliNet DaoliNet is a software-defined networking (SDN) system designed to provide dynamic, efficient links to Docker containers. In Docker containers, microservice workloads are lightweight and transient in nature, and DaoliNet is just right for this property.
Harbor The development and operation of container applications is inseparable from reliable image management. In terms of security and efficiency, the Registry deployed in a private environment is very necessary. Project Harbor is a Registry server open source project designed by VMware China for enterprise users. It includes the functions required by RBAC, LDAP, auditing, management interface, self-registration, HA, etc., and for the characteristics of Chinese users. Design image replication and Chinese support
REX-Ray REX-Ray is an open source project led by the EMC {code} team that provides continuous storage access for Docker, Mesos, and other container runtime environments. Designed to include general-purpose storage, virtualization, and cloud platforms, it provides advanced storage capabilities.
Clair Clair is a container vulnerability analysis service. It provides a list of threats to the container and sends a notification to the user when a new container vulnerability is released.
Weave Weave creates a virtual network and connects to Docker containers deployed on multiple hosts.
Rocket Rocket (also known as rkt) is a container engine from CoreOS that, like Docker, helps developers package applications and dependencies into portable containers, simplifying deployments such as setting up environments. The difference between Rocket and Docker is that Rocket does not have the "friendly features" that Docker provides for enterprise users, such as cloud service acceleration tools, cluster systems, and so on. Conversely, what Rocket wants to do is a purer industry standard.
Libnetwork Libnetwork provides a container connection for a native Go implementation, which is the container's network. The goal of libnetwork is to define a robust Container Network Model that provides a consistent programming interface and network abstraction of the application.
Wormhole WWormhole is a Socket-activated tunneling proxy that recognizes namespaces. It allows you to securely connect to Docker containers on different physical machines. Can be used to perform some interesting functions, such as connecting a service running on the container itself or creating an on-demand service after the connection.
Shipyard Shipyard is a web-based Docker management tool that supports multiple hosts and can manage containers on multiple Docker hosts; view images and even build images; provide RESTful APIs and more. Shipyard To manage and control the Docker host, you need to modify the default configuration on the Docker host to support remote management.
Docker Docker is an open source application container engine that allows developers to package their applications and dependencies into a portable container and then publish them to any popular Linux machine for virtualization. Containers are completely sandboxed and do not have any interfaces between them (similar to the iPhone app). With virtually no performance overhead, it can be easily run in machines and data centers. Most importantly, they don't rely on any language, framework or packaging system.
Scope A docker&kubernetes management, monitoring visualization tool, you can see the topology relationship between containers and tcp communication
Habitus A tool that quickly implements the docker build process, supports complex docker build processes, and implements multiple dockerfile build processes. Typical applications such as programs that require static compilation, such as go, java, are compiled after a docker build. Binary package used in the subsequent build process
Sextant Sextant provides a CoreOS+kubernetes cluster that can be initialized through a fully automated installation of PXE.
KubeVirt KubeVirt is a virtual machine management architecture built around Kubernetes. Use KubeVirt to declare: Create a predefined VM, schedule VMs on the Kubernetes cluster (start VM, stop VM, delete VM) |
PaaS tool
project Introduction
Kel Kel is an open source PaaS system built on Kubernetes, developed in Python and Go. Kel simplifies managing web application publishing and hosting the entire software lifecycle. Kel helps development and operations staff easily manage their application architecture, making K8S easy to use with a set of tools and components.
CloudFoundry-Mesos The Cloud Foundry-Mesos framework is a collaboration between Huawei and Mesosphere engineers to provide a secure, scalable, and scalable cloud operating environment for applications, and to leverage the rich service resources in the Cloud Foundry ecosystem. Enterprises can develop cloud applications through Cloud Foundry and deploy them to DCOS through Cloud Foundry-Mesos, enabling applications to share resources with other services and application frameworks installed on DCOS to maximize resource utilization and significantly reduce enterprise data. Central operating costs. DCOS runs on both virtual and physical environments, supports Linux (and soon supports Windows), and is available for private, public, and hybrid cloud environments.
Flynn Flynn is an open source PaaS system developed by Docker. Written in Go. Support databases include Postgres, Redis, and MongoDB. Flynn uses a fully componentized modular design, and any component and module can be replaced independently.
DINP DINP is another PaaS platform based on Docker.
Kubernetes Kubernetes is an open source container cluster management system from the Google Cloud Platform. Build a container's scheduling service based on Docker. The system can automatically select a work container for use in a cluster of containers. The core concept is the Container Pod.
Tsuru Under Tsuru's PaaS service, you can choose your own programming language, choose to use SQL or NoSQL database, memcache, redis, and many other services, even with Git version control tools to upload your application.
Atlantis Atlantis is an open source PaaS based on Docker, written in Go for HTTP applications. Atlantis can easily build and deploy applications to containers in routing requests. Atlantis is used in a wide range of applications in Ooyala.
Lain Lain is a docker-based PaaS system. Its highly oriented development organization for technology stacks seeking efficient operation and maintenance solutions, devops human lack of startup, personal developers. Unified and efficient development workflow, reduce application operation and complexity; directly provide application development, integration, deployment, operation and maintenance package solutions based on IaaS / private IDC bare metal.
OpenDCP OpenDCP is a Docker-based cloud resource management and scheduling platform that combines mirrored warehouse, cloudy support, service orchestration, service discovery and other functions to support the expansion and shrinkage of service pools. Its technical system is derived from Weibo to support holidays and Flexible scheduling DCP system for hot spot peak traffic. OpenDCP allows the use of public cloud servers to build an IT infrastructure that adapts to Internet applications and minimizes the operational effort.
Swan Swan is a new HTTP API based on mesos, developed using golang. You can use swan to deploy applications on a mesos cluster and manage the entire lifecycle of your application, roll updates with new versions, extend applications, and automate failover for applications and services when they are unavailable. Perform a health check.
Big Data & ML
project Introduction
MLF The Maitreya Project is a big data machine learning framework. Optimized for processing big data, scale up with business growth, model training and use can be integrated into the production system as a library or service, with rich models, highly scalable, highly readable, suitable for beginners Characteristics of learning big data models
Glow Glow is an easy-to-use distributed computing system written in Go and is a replacement for Hadoop Map Reduce, Spark, Flint, Samza, and more. Glow's goal is to provide a library that can be simpler to compute in parallel threads or distributed cluster machines.
Goml The machine learning library contains a number of tools that allow you to learn the data content of your channel online.
Golearn GoLearn implements the familiar Scikit-learn adaptation/prediction interface for fast predictive testing and exchange. GoLearn is a mature project that provides accessibility features such as cross-validation and training/testing.
Gorgonia This machine learning database is written entirely in Go, and according to its developer "chewxy", it can "provide the necessary conditions for dynamically building neural networks and related algorithms."
Poseidon The Poseidon system is a log search platform that quickly analyzes and retrieves specific strings in trillions of hundreds of petabytes of log data. The system can be applied to any structured or unstructured massive (from trillion to petascale scale) data query retrieval needs).
Microservice
project Introduction
Micro Micro is a microservice ecosystem focused on simplifying the development of distributed systems. Pluggable plug-in design provides a powerful pluggable architecture to ensure that the underlying components can be flexibly replaced.
Kite A Go-based microservices framework, Kite is a framework within Koding. The framework provides service discovery, multiple authentication functions, and the server communicates via RPC. It also provides a websocket js library for browsers. Communicate between.
Goa Goa is a framework for building microservices with Go, with a unique design-first approach.
Go-kit Go-kit is a distributed development kit for the Go language for developing microservices.
Hprose Hprose is the abbreviation of High Performance Remote Object Service Engine - the micro-service preferred engine. It is an advanced lightweight cross-language cross-platform object-oriented high performance remote dynamic communication middleware. It is not only easy to use, but also powerful. You only need a little time to learn, you can use it to easily build a cross-language cross-platform distributed application system.
Gizmo The New York Times open source go microservice tool provides the following features: standardized configuration and logging; stateful monitoring endpoints for configurable policies; configuration for managing pprof endpoints and log levels; structured logging, providing basic request information; useful metrics for endpoints Elegant stop service; basic interface for defining expectations and vocabulary
Hystrix-go Used to isolate remote system calls, third-party library calls, service calls, libraries that provide a fuse mechanism, avoid avalanche effects, and the Go version of Hystrix. Note that Hystrixs is a java library for Netflix open source.
Gateway Gateway is an HTTP-based API gateway implemented using go. Features : API Aggregation; Flow Control; Fuse; Load Balancing; Health Check; Monitoring; Message Routing; Backend Management WebUI. What to do : Plan a more friendly URL to the caller. The result of aggregating multiple APIs is returned to the API caller, which is good for the mobile side, and the back end can implement the atomic interface. Protecting back-end API services is not overwhelmed by sudden anomalous traffic. Provides a fuse mechanism to make the backend API Server self-healing. With the message routing capability, grayscale publishing and AB testing are implemented.
Fabio Fabio is a fast, simple zero configuration developed by the ebay team using golang to enable consul deployed applications to quickly support http(s) load balancing routers. Here is a Chinese article http://dockone.io/article/1567 describes how to use fabio+consul to achieve service discovery, load balancing, and explain the principle, and finally the demo program
Appdash Go version of the distributed application tracking system, based on the principle of google dapper
Jaeger Jaeger is Uber's distributed tracking system, built on the principle of google dapper, with Cassandra as the storage layer.
CI/CD
project Introduction
Cyclone Cyclone is a cloud native continuous integration and continuous publishing platform for creating container workflows. It is easy to use, developed in Go language, and has detailed Chinese documentation.
Drone Drone is a Docker-based continuous publishing platform developed in Go
Database Technology
project Introduction
LedisDB Ledisdb is a reference ssdb, implemented by go, the underlying is based on leveldb, a high-performance nosql database similar to redis, providing support for kv, list, hash and zset data structures.
BuntDB It is a low-level, low-level, embeddable key/value in-memory database (IMDB) developed by Go, data persistence storage, ACID compliance, custom indexing and geospatial data.
Cockroach CockroachDB (蟑螂 database) is a scalable data storage system that supports geolocation processing and supports transaction processing. CockroachDB provides two different transaction features, including snapshot isolation (SI) and sequential snapshot isolation (SSI) semantics, which is the default isolation level.
Qb-go Qb is a database toolkit for the go language that makes it easier to use the database. Inspired by Python's favorite ORM SQLAlchemy, it is both an ORM and a query generator. It is quite modular in the case of expressing api and query building stuff.
GoshawkDB GoshawkDB is a distributed object storage service that supports multi-platform in Go language development, supporting transactions and fault tolerance. The transaction control of GoshawkDB is done on the client side. GoshawkDB server side uses AGPL license, Go language client uses Apache license
Codis Codis is a distributed Redis solution. For upper-level applications, there is no obvious difference between connecting to Codis Proxy and connecting to the native Redis Server (unsupported command list). The upper application can be used like Redis with stand-alone, Codis The underlying handles the forwarding of requests, non-stop data migration, etc. All the things behind are transparent to the previous client. You can simply think that the backend is a memory-infinite Redis service.
Cayley Cayley is Google's open source Graph database, inspired by the graph database behind Freebase and Google's Knowledge Graph.
Redigo Redigo is the Go client of the Redis database.
Radix.v2 Radix.v2 is one of the official Redis recommended clients. Compared to redigo, radix.v2 is lightweight, elegant interface and API friendly.
Redis-go-cluster Redis-go-cluster is a Golang Redis client based on Redigo. Redis-go-cluster can cache slot information locally and automatically update when the cluster is modified. This client manages each node connection pool and uses goroutine to perform concurrent execution as much as possible, achieving high efficiency and low latency.
Elastic Elastic is the golang client of open source search engine elasticsearch, API friendly, supports most es interfaces, supports es version comprehensive, from 1.x to the latest 6.x full coverage
Dgraph Dgraph is an extensible, distributed, low latency graph database. DGraph's goal is to provide the scale and throughput of Google's production levels, and in the terabytes of structured data, no real-time queries with low enough latency are provided by users. DGraph supports GraphQL as the query language and responds to JSON.
DegDB DegDB is a distributed economic graph database.
Vitess Outube's open source distributed MySQL toolset, Vitess, automatically shards MySQL data tables, rewrites a single SQL query to distributed to multiple MySQL Servers, supports row caching (higher cache efficiency than MySQL itself), and supports replication fault tolerance. , has been used in the Youtube production environment
Xuncache Xuncache is a free and open source NOSQL (in-memory database) Developed with golang, easy to use and powerful (even if the novice is fully competent), excellent performance can easily handle massive data, can be used in the cache system.
Pgweb Gweb is a web-based PostgreSQL management system developed in Go.
Orchestrator MySQL replication topology visualization tool
Mysql-schema-sync Mysql-schema-sync is a cross-platform, green, non-dependent MySQL table structure auto-synchronization tool developed by Go. Used to synchronize online (other environment) database structure changes to the test (local) environment!
TiDB TiDB is a distributed SQL database developed by the domestic PingCAP team. Inspired by Google's F1, TiDB support includes features from traditional RDBMS and NoSQL.
Kingshard A high-performance mysql middleware that supports read and write separation, data fragmentation, security auditing, etc.
Influxdb A horizontally scalable time series database, built-in http api, support for tagging data, flexible query strategy and real-time query of data, support for sql statement query
DBShield DBShield is a database firewall developed in Go to protect your data from SQL injection. Supported databases include: DB2, MySQL, MariaDB, Oracle, PostgreSQL.
Storage technology
project Introduction
Torus Torus is a storage system tailored for container clusters that provides reliable and scalable storage for container clusters orchestrated and managed by Kubernetes. This is another open source product released by CoreOS after etcd, rkt, flannel, and CoreOS Linux.
Afero Afero is a file system framework that provides a simple, unified, and generic API to interact with any file system, providing an interface, type, and method as an abstraction layer. Afero's interface is very simple, simple to design, and discards unnecessary constructors and initialization methods. Afero as a library also provides a set of interoperable background file systems that preserve the functionality and benefits of the os and ioutil packages when working with Afero.
REX-Ray REX-Ray is an open source project led by the EMC {code} team that provides continuous storage access for Docker, Mesos, and other container runtime environments. Designed to include general-purpose storage, virtualization, and cloud platforms, it provides advanced storage capabilities.
SeaweedFS SeaweedFS is a simple, highly scalable distributed file system consisting of two parts: storing billions of files; fast file serving. SeaweedFS As a semantic alternative to supporting full POSIX filesystems, Seaweed-FS chooses to implement only key-file mapping, similar to "NoSQL", or "NoFS".
Bfs Bfs is a distributed file system (small file storage) written in Go.
IPFS IPFS is a distributed file system that seeks to connect to the same file system of all computer devices. In some ways, this is very similar to the original web target, but IPFS will end up more like a git object exchanged by a single bitstream group. IPFS = InterPlanetary File System
Gotgt Gotgt is a high-performance, scalable iSCSI target service written in Go.
Distributed Systems
project Introduction
Confd Confd is a lightweight configuration management tool. By querying Etcd, combined with the configuration template engine, the local configuration is kept up-to-date, and there is a periodic detection mechanism, and the configuration changes are automatically reloaded.
Zerg Docker-based distributed crawler service
Doorman Doorman is a client rate limiting solution where clients communicate with shared resources, including databases, gRPC services, RESTful APIs, etc. Doorman can be used to restrict calls to resources. Doorman is developed in Go and uses the gRPC communication protocol. Its highly available feature requires a distributed lock manager, currently supports etcd, and can be replaced with Zookeeper.
Mgmt Mgmt is a distributed, event-driven configuration management tool. The tool supports parallel execution, and its librarification is the basic management tool for new and existing software.
Yoke Yoke is a highly available cluster of Postgres with automatic switching and automatic cluster recovery. Postgres Redundant/Automatic Failover Solution provides simple management of a highly available PostgreSQL cluster.
SeaweedFS SeaweedFS is a simple, highly scalable distributed file system consisting of two parts: storing billions of files; fast file serving. SeaweedFS As a semantic alternative to supporting full POSIX filesystems, Seaweed-FS chooses to implement only key-file mapping, similar to "NoSQL", or "NoFS".
Glow Glow is an easy-to-use distributed computing system written in Go and is a replacement for Hadoop Map Reduce, Spark, Flint, Samza, and more. Glow's goal is to provide a library that can be simpler to compute in parallel threads or distributed cluster machines.
Nomad Nomad is a cluster manager and scheduler designed for microservices and batch processing workflows. Nomad is distributed, highly available, and can scale to thousands of nodes across data centers and regions.
Dcmp DCMP is a distributed configuration management platform. Provides an etcd management interface, which can modify the configuration information through the interface, and the configuration file can be synchronized by using confd.
Gleam Here is a fast and scalable distributed map/reduce system written by Go and LuaJIT that combines Go's high concurrency with Luajit's high performance for stand-alone operation or for distributed computing.
Message system
project Introduction
KiteQ KiteQ is an mq framework (message queue) for multiple persistence scenarios based on go + protobuff.
NSQ NSQ is an open source messaging system with no central design, automatic node registration and discovery. Can be used as the basis for an internal communication framework that is easy to configure and publish.
Kingtask Kingtask is a lightweight asynchronous timing task system developed by Go. Support for timed asynchronous tasks. The failure retry mechanism is supported, and the retry time and number can be customized. The task execution result can be queried.
Go Machinery Machinery is an asynchronous task queue and job queue for the Go language, based on distributed messaging. A Python-like Celery framework.
Kaca Kaca is a web publishing/subscribing system based on the websocket protocol developed in the golang language.
Server management
project Introduction
Sharkey Sharkey is a service used by OpenSSH management certificates. Sharkey is divided into a client component and a server component. The server is responsible for issuing the signed host certificate, and the client is responsible for installing the host certificate on the machine.
OSinstall CloudBoot” (OSinstall) cloud installation platform is a fully automated X86 server installation tool launched by financial cloud startup Hangzhou Yunhao Technology. It is completely open source and free according to the Apache protocol. It is fully automatic to build a physical machine resource pool, just like creating a virtual machine. Convenient installation of physical machines.
Ssh2go Ssh2go is a golang wrapper around libssh. Libssh is the SSH code base. It supports both the server and the client. Every day, ssh, sshd, scp, and sftp are based on libssh. Ssh2go is a Go language binding to libssh, 100% of the libssh interface is available, and an example is integrated for easy reference.
Gooverssh Gooverssh is a small application based on ssh local port forwarding service developed by a ssh development kit based on gosshtool. It can easily break through some network restrictions, such as accessing intranet database service through ssh proxy.
Gosshtool Gosshtool provide some useful functions for ssh client in golang.implemented using ssh related operations in golang.org/x/crypto/ssh.go language, support ssh local port forwarding service
Teleport Teleport is a tool for remote management of linux cluster servers based on ssh and https by startup startup Gravitational. It features dual verification login; operation record playback; session sharing for easy troubleshooting; automatic discovery of cluster servers and containers
Security tool
project Introduction
Gomitmproxy GomitmProxy is a mitmproxy that you want to implement in the golang language. It mainly implements http proxy. Currently, it implements http proxy and https capture.
Hyperfox Hyperfox is a secure tool for proxying and logging HTTP and HTTPS traffic over a local area network.
Gryffin Gryffin is a large-scale web security scanning platform developed by Yahoo. It is not another scanner, its main purpose is to solve two specific problems - coverage and scalability.
Ngrok Ngrok is a reverse proxy that establishes a secure tunnel between a public endpoint and a locally running web server. Ngrok captures and analyzes traffic on all channels for later analysis and playback.
Network tool
project Introduction
DaoliNet DaoliNet is a software-defined networking (SDN) system designed to provide dynamic, efficient links to Docker containers. In Docker containers, microservice workloads are lightweight and transient in nature, and DaoliNet is just right for this property.
Seesaw Seesaw is a Linux-based load balancing system from Google Open Source. Seesaw includes basic load balancing features while supporting advanced features such as: anycast, Direct Server Return (DSR), support for multiple VLANs, and centralized configuration. At the same time, its design is designed to be easy to maintain. It's important to note that although the project is affiliated with Google, it is not an official Google product.
TcpRoute2 TcpRoute, the router at the TCP layer. For the TCP connection, the optimal line is automatically selected from multiple lines (allowing arbitrary nesting) and multiple domain name resolution results. TcpRoute2 is a rewritten version of golang. Provide external services through the socks5 proxy protocol. The proxy function is split into separate libraries. For detailed proxy url format level options, please refer to ProxyClient. Currently, it supports direct connection, socks4, socks4a, socks5, http, https, ss proxy lines.
Gor Gor is a simple HTTP traffic replication tool written in Go, primarily to return traffic from the production server to the development environment. Use Gor to test your code in an actual user session.
Traefik Træfɪk is a new http reverse proxy, load balancing software that can easily deploy microservices. It supports multiple backends (Docker, Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file.. .) , can be automated and dynamic management of the configuration.
TChannel TChannel is a network multiplexing and framing protocol for RPC.
Go-tcp-proxy Go-tcp-proxy is a simple tcp proxy that can be used for tcp port forwarding or as a http proxy.
myLG myLG is an open source network tool set that contains many different types of network diagnostic tools, including ping, trace, bgp, dns lookup, port scan, LAN network discovery, web interface, tcpdump, etc.
Cow COW is an HTTP proxy server that simplifies wall-to-wall. It can automatically detect walled sites, only use secondary agents for these sites; support multiple protocols: sock5, http, shadow, cow
Web tool
project Introduction
Tyk Tyk is an open source, lightweight, fast and scalable API gateway that supports quota and speed limits, supports authentication and data analysis, supports multi-user and multi-organization, and provides a full RESTful API.
Shortme URL short link service written in Golang.
WuKongSearch WuKong is a full-text search engine. Features include: efficient indexing and searching (1M microblogging 500M data 28 seconds indexing, 1.65 milliseconds search response time, 19K search QPS); support Chinese word segmentation (using sego word segmentation concurrent segmentation, speed 27MB / sec); support calculation Key words in the text proximity (token proximity); support calculation of BM25 relevance; support custom scoring fields and scoring rules; support online add, delete indexes; support persistent storage; can achieve distributed indexing and search, etc.
Pholcus Pholcus (Ghost Spider) is a high-concurrency, distributed, heavyweight crawler software written in pure Go language. It supports three operating modes: single, server and client. It has three operation interfaces: Web, GUI and command line. Simple and flexible, batch task concurrency, rich output mode (mysql/mongodb/csv/excel, etc.), a large amount of Demo sharing; at the same time, she also supports horizontal and vertical capture modes, supporting analog login and task pause, cancel, etc. Features.
Codetainer Codetainer allows you to create a browser-based code to run a sandbox that can be easily embedded into your web application. You can think of it as an open source clone of codepicnic.com).
GoTTY GoTTY is a simple command-line tool that lets you share CLI tools into web applications. GoTTY can share terminals as web applications.
TermUI Terminal dashboard written in Go language
Hound Fast lightning-fast code search open source tool
Goim Goim is a cluster-enabled im and real-time push service (supports websocket, http and tcp protocols)
Fasthttp Asthttp is Go's fast HTTP implementation and is currently very successful in 1M concurrent production environments, allowing continuous connections of 100K qps from a single server. HTTP server performance compared to net/http, fasthttp is 10 times faster than net/http
Netgraph Netgraph is a cross-platform B/S architecture HTTP capture tool written in Go that makes it easy to view HTTP packets directly on a Linux server.
Gohttp Gohttp is an http file server with functions: preview function of various files, real-time directory zip package download, QR code scan download support, Apple application online installation, file upload, etc.
API-front The API front is an HTTP API front end that performs request proxy forwarding, protocol packet capture analysis, and traffic replication. Mainly used to develop test environment, to solve problems such as change of development test environment
Esumable file uploads The function of resuming the resume of file uploading, the whole set of functions includes the protocol implementation, client, server. Client and server have multiple language implementations including go, python, node, etc. |
Pproxy Http capture agent, http protocol debugging tool
Hystrix-go Used to isolate remote system calls, third-party library calls, service calls, libraries that provide a fuse mechanism, avoid avalanche effects, and the Go version of Hystrix. Note that Hystrixs is a java library for Netflix open source.
Web framework
project Introduction
Iris-Go With Iris-Go, you can easily help you develop web-based applications. To put it simply: Iris-Go is similar to Beego in the domestic big cow, but from the official information, Iris-Go has better performance!
Baa Baa A simple and efficient Go web development framework. There are mainly routing, middleware, dependency injection and HTTP context.
Orivil Orivil is a new web framework developed by golang, inspired by Laravel and Symfony.
Ecgo Ecgo is an easy to learn, easy to use, and easy to extend go web development framework
Gin Gin is a web framework developed in the Go language that provides Martini-like APIs, but with better performance. Because of the httprouter performance has increased by 40 times.
Melody Melody is a micro WebSocket framework for the Go language, based on github.com/gorilla/websocket.
Utron Utron is a Go language lightweight MVC framework for quickly building scalable and reliable database-driven web applications.
Lessgo Lessgo is a simple, stable, efficient, and flexible web-complete development framework written in Go. Its project organization form has been carefully designed to achieve separation between front and rear, system and business separation, perfect compatibility with MVC and MVVC and other development modes, which is very conducive to the development of enterprise applications and API interfaces. Of course, the most noteworthy is that it breaks through the support of runtime routing rebuild, developers can easily enable / disable modules and operations in the Admin background, add / remove middleware and other functions! At the same time, it recommends functional programming based on HandlerFunc and MiddlewareFunc, which also makes development more flexible and interesting.
Hopen Golang web speed development framework.
Faygo Faygo is a fast, compact Go Web framework that produces high-performance web applications (especially API interfaces) with minimal code. Simply define the struct Handler and Faygo will automatically bind, validate the request parameters and generate an online API document.
Beego Beego is an application framework developed with Go, the idea comes from tornado, the routing design comes from sinatra,
Revel Revel is the framework for the Go language, and its ideas come entirely from Java's Play Framework.
Martini Martini is a very new web framework for the Go language, developed using Go's net/http interface, a framework like Sinatra or Flask, and you can use your own DB layer, session management and templates.
Tango Tango, the micro-kernel scalable Go language web framework. At the same time, functions and structures are supported as executables, and plug-ins are rich.
Macaron Macaron is a Go Web framework with high productivity and modular design. The framework adheres to the basic ideas of Martini and builds on it.
Web.go Web.go is similar to web.py, but uses the web application development framework implemented by the Go programming language. It was not long before Go released the framework, which was almost the earliest Go framework. It has not been updated for some time. However, the framework code is not much, and its source code can be read.
Echo Echo is a fast HTTP router (zero dynamic memory allocation) and Go's micro web framework.
Blockchain technology
project Introduction
Fabric Fabric is an open source blockchain implementation. The development environment is built on the VirtualBox virtual machine. The deployment environment can be self-built or deployed directly on BlueMix. The deployment method can be traditionally docked, and the consensus algorithm can be plugged in. Support Go. Develop smart contracts with JavaScript, featuring enterprise-level security mechanisms and membership mechanisms. If you don't know what these terms mean, just remember that Fabric is in the blockchain, and it's likely that Hadoop is like big data.
Go-ethereum The go-ethereum client, often called geoth, is a command-line interface that implements the complete Ethereum node implemented on Go. By installing and running geth, you can participate in the Ethereum front-end real-time network and do the following: a. Mining real Ethercoin b. Transfer funds between different addresses c. Create contracts, send transactions d. Explore block history e. Lots Other functions
Chain The blockchain project in the financial sector. Chain was launched by a newly established two-year American startup, Chain, an enterprise-level blockchain platform architecture that allows organizations to construct better financial services from scratch. . The Chain Open Standard achieves breakthroughs in the following areas: • The new consensus model enables the final completion of transactions in less than a second, even if the transaction volume is very large; • Private solutions encrypt blockchain data, And allow relevant counterparties and regulators to selectively read; • Smart contract frameworks and virtual machines support simple rule execution, and Turing complete programs for key-value storage; • Scalable data models can be network participants Reduce operational load; • Rich metadata layer to support KYC (know your customer) and AML (anti-money laundering) requirements
other
project Introduction
Kone Transparent proxy for home or corporate networks, can be used to turn over walls, etc.
KodeRunr KodeRunr (pronounced code runner) is an application I wrote in Go in my free time. As the name suggests, you can use it to write programs and paste code on a web page, on the command line, without having to install any programming language locally. Support for Ruby, Python, GO, Swift, C, Elixir, etc.
Godaemon Godaemon is used to add daemon and graceful to the application.
Gomobile Gomobile is an excellent cross-platform development library for iOS and Android that provides developers with the tools to create Android and iOS mobile platform code.
Gojieba The Golang language version of the Chinese word segmentation.
Cherry Cherry is a web chat engine developed in Go.
MailSlurper MailSlurper is a portable SMTP mail server that is very useful for local and team application development. MailSlurper is small and fast to run, supporting SQLite, MSSQL and MySQL. databases.
RobustIRC RobustIRC is an IRC that does not have a network outage. RobustIRC main features: no network interruption when the server is unavailable; can use standard IRC client; robust, can handle client and network connection problems well
Qor Qor is a series of CMS tools library developed by Golang. Qor can quickly build a back-end management system for the website. Qor's work library includes: 1, background management: CURD management can be entered into the database, support one-to-one, one-to-many, many-to-many relationship maintenance, etc.; 2, support uploading images to the cloud and filesystem, resize, crop pictures Etc.; 3, Publish release system, can modify the data, and after inspection, and then released to the formal environment; 4, state machine, can be used to develop workflow system; 5, I18n, translation, can be through the WEB interface Translate and save the translation to the database; 6, L10n, localization, unlike translation, can localize content or data structures for a certain region. 7, Roles, rights management; 8, Exchange, import and export data through Excel, CSV; 9, Worker, background task management, can be used to run scheduled tasks, etc.
FishChat FishChat (fish pass - fish pass) is a distributed scalable IM server. It is a pure golang written excellent instant messaging software (IM), which combines the advantages of existing products on the market and has intelligent hardware gateway management. (Learn QQ IOT idea, conceived).
goRBAC goRBAC provides lightweight, role-based access control for Go language applications.
Hey Boom is a performance test tool similar to apache ab developed by Google as a female engineer using the Go language. Compared to ab, boom is better cross-platform and easier to install.
Mattermost Mattermost is an open source alternative to Slack. Mattermost is developed in Go, an open source team communication service. Bringing teams with messaging and file sharing across PCs and mobile devices, providing archiving and search capabilities.
Glot Glot is a platform that can run a variety of programming language code snippets online. The project is developed using Haskell Script, Go, Erlang, and Shell, and the runtime environment is based on Docker containers.
Lantern Lantern is a peer-to-peer science internet software.
Dog-tunnel Dog Hole is a high-speed P2P port mapping tool that supports Socks5 agents. After the 0.5 version, the open source is started. The UDP underlying is based on the open source library KCP rewriting, which greatly improves the efficiency and has obvious advantages in harsh environments. At the same time, non-P2P version (Lite version) is provided. The connection process at both ends is completely independent of the intermediate server. It supports encryption and login authentication, and is automatically reconnected. However, it is necessary to ensure that both ends can communicate normally (otherwise, please use the default P2P version)
GRPC GRPC is a high performance, open source and general purpose RPC framework for mobile and HTTP/2 designs. Currently available in C, Java, and Go languages: grpc, grpc-java, grpc-go. C version supports C, C++, Node.js, Python, Ruby, Objective-C, PHP and C# support. GRPC is based on The HTTP/2 standard design brings features such as bidirectional streaming, flow control, header compression, and multiple multiplexing requests on a single TCP connection. These features make it perform better on mobile devices, saving power and saving space.
LiteIDE LiteIDE is an open source, cross-platform lightweight Go language integrated development environment (IDE).
Firefly-proxy Through the wall tool. GFW ladder. Provide client and server. Support multiple platforms, including linux, macos, windows, android
Wu A gadget that listens for file changes and automates certain operations. It can be used to automatically restart the web server after configuration changes.
Apex Management, deploy the aws lambda function tool, support the use of go language to write lambda function (Note: currently aws official does not support the use of go language to write lambda function, but apex can be disguised support)
Gosuv Process management, similar to python's supervisord, provides a web management interface
Chaosmonkey Chaos Monkey is a open source tool for service usability testing at Netflix, which detects system availability by planning real-world faults in production systems (such as high CPU load, memory overflow, disk writes, server downtime, etc.). .
Scheduler The scheduler specializes in the task of scheduling and distributing tasks, and the specific task execution of each task is assigned to each project, thereby achieving unified configuration and management of tasks. The tool provides a web management interface
Hugo Hugo is a static website generator implemented by Go; simple, easy to use, efficient, easy to expand, and fast to deploy; compared to Hexo and Jekyll, hugo has the advantage of extremely fast generation.
⬆ Back to top