baseplate.py
Apache ZooKeeper
baseplate.py | Apache ZooKeeper | |
---|---|---|
11 | 36 | |
530 | 11,972 | |
0.2% | 0.7% | |
8.5 | 8.3 | |
4 days ago | 2 days ago | |
Python | Java | |
BSD 3-clause "New" or "Revised" License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
baseplate.py
-
The .zip TLD sucks and it needs to be immediately revoked.
Almost any download link on the internet (for example an attachment to any Wordpress blog post) could serve as an example. Since we are on a programming subreddit let's use Github as an example. When you open a repository and click the "Download ZIP" button it's a link straight to an URL like this one: https://github.com/reddit/baseplate.py/archive/refs/heads/develop.zip (this particular one is for Reddit's Python library).
-
Python use by SWEs
Even Reddit has python backends https://github.com/reddit/baseplate.py based on Pyramid. They also have a go one. https://github.com/reddit/baseplate.go
-
Reddit System Design/Architecture
there's a multitude of services in reddit's architecture. as far as i can tell, they mostly using reddit's baseplate framework (which has implementations in both python and go).
-
Reddit Recap Series: Backend Performance Tuning
Finally, the problem that we didn’t experience directly, but it was mentioned during consultations with another team that had experience with pgBouncer: the Baseplate.py framework that both of us are using sometimes leaked the connections, leaving them open after the request, but not returning them back into the pool.
- What is an example of a fully finished python software product on github?
-
Is the Pyramid framework dead?
Also reddit team using pyramid for services https://github.com/reddit/baseplate.py
-
is flask only for "smaller" projects or it can also be used for large scalable projects ?
Reddit is built on neither Flask nor Django. The old monolith predates Flask and Django and is built on its own framework. Our new microservices are built on our Baseplate.py framework.
-
Evolving Reddit’s ML Model Deployment and Serving Architecture
Minsky is an internal baseplate.py (Reddit’s python web services framework) thrift service owned by Reddit’s Machine Learning team that serves data or derivations of data related to content relevance heuristics — such as similarity between subreddits, a subreddits topic or a users propensity for a given subreddit — from various data stores such as Cassandra or in process caches. Clients of Minsky use this data to improve Redditor’s experiences with the most relevant content. Over the last few years a set of new ML capabilities, referred to as Gazette, were built into Minsky. Gazette is responsible for serving ML model inferences for personalization tasks along with configuration based schema resolution and feature fetching / transformation.
-
Deadline Budget Propagation for Baseplate.py
Baseplate is implemented in Python and Go, and although they share the same main functionality, smaller features differ between the two. One such feature that was previously on the Go implementation but not Python was deadline budget propagation, which passes on the remaining timeout available from the initial client request all the way through the server and any other requests that may follow. The lack of this feature in Baseplate.py meant that many resources were being wasted by servers doing unnecessary work, despite clients no longer awaiting their response due to timeout.
-
Solving The Three Stooges Problem
In order to make this solution work, you’ll need a web stack that can handle many concurrent requests. Reddit’s stack for most microservices is Python 3, Baseplate, and gevent. Django/Flask also work well when run with gevent. gevent is a Python library that transparently enables your microservice to handle high concurrency and I/O without requiring changes to your code. It is the secret sauce that allows you to run tens of thousands of pseudo-threads called greenlets (one per concurrent request) on a small number of instances. It allows for threads handling concurrent duplicate requests to be enqueued while waiting to acquire the lock, and then for those queues to be drained as threads acquire the lock and execute serially, all without exhausting the thread pool.
Apache ZooKeeper
-
On Implementation of Distributed Protocols
Apache ZooKeeper — a distributed coordination, synchronization, and configuration service (written in Java);
-
Easy Guide to Integrating Kafka: Practical Solutions for Managing Blob Data
To use Kafka, we also need to deploy a service that keeps configuration informations such as Zookeeper.
-
Fault Tolerance in Distributed Systems: Strategies and Case Studies
Failure Detection and Recovery It’s not enough to have backup systems. It’s also crucial to detect failures quickly. Modern systems employ monitoring tools and rely on distributed coordination systems such as Zookeeper or etcd to identify faults in real-time: once detected, recovery mechanisms are triggered to restore the service.
-
Reddit System Design/Architecture
zookeeper: is (was?) used for secrets management. it was also used as a basic health check, but has been since been replaced.
-
Analysing Github Stars - Extracting and analyzing data from Github using Apache NiFi®, Apache Kafka® and Apache Druid®
You can install Kafka from https://kafka.apache.org/quickstart. Because Druid and Kafka both use Apache Zookeeper, I opted to use the Zookeeper deployment that comes with Druid, so didn’t start it with Kafka. Once running, I created two topics for me to post the data into, and for Druid to ingest from:
-
Use AWS CloudFormation to create ShardingSphere HA clusters
Please note that we use Zookeeper as the Governance Center.
-
How to choose the right API Gateway
Next, review deployment complexity such as DB-less versus database-backed deployments. For example, Kong does require running Cassandra or Postgres. Apigee requires Cassandra, Zookeeper, and Postgres to run, while other solutions like Express Gateway and Tyk only require Redis. Apache APISIX uses etcd as its data store, it stores and manages routing-related and plugin-related configurations in etcd in the Data Plane.
-
In One Minute : Hadoop
ZooKeeper, a system for coordinating distributed nodes, similar to Google's Chubby
-
To study Apache Kafka Architecture in details, and how to install, deploy configure Apache kafka.
[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
-
ElasticJob 3.0.2 is released including failover optimization, scheduling stability, and Java 19 compatibility
ElasticJob achieves distributed coordination through ZooKeeper. In practical scenarios, users may start multiple jobs in the same project simultaneously, all of which use the same Apache Curator client. There are certain risks due to the nature of ZooKeeper and the callback method of Curator in a single event thread.
What are some alternatives?
xhtml2pdf - A library for converting HTML into PDFs using ReportLab
Hazelcast - Hazelcast is a unified real-time data platform combining stream processing with a fast data store, allowing customers to act instantly on data-in-motion for real-time insights.
Apache Thrift - Apache Thrift
kubernetes - Production-Grade Container Scheduling and Management
Pyramid - Pyramid - A Python web framework
JGroups - The JGroups project
rtv - Browse Reddit from your terminal
Zuul - Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
pottery - Redis for humans. 🌎🌍🌏
Akka - Build highly concurrent, distributed, and resilient message-driven applications on the JVM
redsync - Distributed mutual exclusion lock using Redis for Go
etcd - Distributed reliable key-value store for the most critical data of a distributed system